日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java画图(直线,矩形,椭圆),并显示其周长面积

發布時間:2024/3/24 java 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java画图(直线,矩形,椭圆),并显示其周长面积 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Shape類 父類

package com.lovoinfo.shape;import java.awt.Color; import java.awt.Graphics; /*** 圖形(抽象類,不能實例化)* @author Administrator**/ public abstract class Shape {protected int startX,startY;//起點橫縱坐標protected int endX,endY;//終點橫縱坐標protected Color color;public void setColor(Color color) {this.color = color;}/*** 繪圖(抽象方法留給子類重寫)* @param g 畫筆*/public abstract void draw(Graphics g);public abstract void calculate(Graphics g);public int getStartX() {return startX;}public void setStartX(int startX) {this.startX = startX;}public int getStartY() {return startY;}public void setStartY(int startY) {this.startY = startY;}public int getEndX() {return endX;}public void setEndX(int endX) {this.endX = endX;}public int getEndY() {return endY;}public void setEndY(int endY) {this.endY = endY;}}

定義子類
Rectangle
Oval
Line

package com.lovoinfo.shape;import java.awt.Graphics;public class Rectangle extends Shape {private int width;private int height;private String s;@Overridepublic void draw(Graphics g) {g.setColor(color);width= Math.abs(endX-startX);height=Math.abs(endY-startY);int x1=startX<endX?startX:endX;int y1=startY<endY?startY:endY;g.drawRect(x1, y1, width, height);}@Overridepublic void calculate(Graphics g) {s="此圖為矩形"+"矩形周長為:"+2*(width+height)+"面積為:"+width*height;g.drawString(s, 100,100 );}} package com.lovoinfo.shape;import java.awt.Graphics;public class Oval extends Shape{private static final double PI = 3.14;private String s;private int width;private int height;@Overridepublic void draw(Graphics g) {g.setColor(color);width= Math.abs(endX-startX);height=Math.abs(endY-startY);int x1=startX<endX?startX:endX;int y1=startY<endY?startY:endY;g.drawOval(x1, y1, width, height);}@Overridepublic void calculate(Graphics g) {double a=width/2;double b=height/2;s="此圖為橢圓:"+"面積為:"+PI *a*b+"周長為:"+2*PI*b+4*(Math.abs(a-b));g.drawString(s, 100, 100);}} package com.lovoinfo.shape;import java.awt.Graphics;public class Line extends Shape {private String s;@Overridepublic void draw(Graphics g) {g.setColor(color);g.drawLine(startX,startY, endX, endY);}@Overridepublic void calculate(Graphics g) {s="此圖為直線"+"長度為:"+Math.sqrt((startX-endX)*(startX-endX)+(startY-endY)*(startY-endY));g.drawString(s, 100, 100);}}

工具類
產生直線橢圓矩形坐標隨機數

package com.lovoinfo.util;import java.awt.Color; /*** 工具類:第一:加上final,讓這個類不能被繼承*      第二:構造器私有,讓別人只能以對象加點調用方法* @author Administrator**/ public final class MyUtil {private MyUtil(){}/*** 產生指定范圍的隨機整數* @param min 最小值(閉區間)* @param max 最大值(閉區間)* @return 指定范圍的隨機整數*/public static int random(int min,int max){return (int) (Math.random()*(max-min+1)+min);}public static Color randomColor(){int r=random(0,255);int g=random(0,255);int b=random(0,255);return new Color(r,g,b);}}

UI

package com.lovoinfo.ui;import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JButton; import javax.swing.JFrame;import com.lovoinfo.shape.Line; import com.lovoinfo.shape.Oval; import com.lovoinfo.shape.Rectangle; import com.lovoinfo.shape.Shape; import com.lovoinfo.util.MyUtil;@SuppressWarnings("serial") public class MyFrame extends JFrame {private class ButtonHandler implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {String command=e.getActionCommand();if(command.equals("Line")){shape=new Line();}else if(command.equals("Oval")){shape=new Oval();}else{shape=new Rectangle();}shape.setStartX(MyUtil.random(0, 1000));shape.setStartY(MyUtil.random(0, 600));shape.setEndX(MyUtil.random(0, 1000));shape.setEndY(MyUtil.random(0, 600));// shape.setColor(MyUtil.randomColor());shape.setColor(Color.black);repaint();}}private JButton lineButton;private JButton ovalButton;private JButton recButton;// private Line line = null; // private Rectangle rec = null; // private Oval oval = null;private Shape shape=null;public MyFrame() {this.setSize(1000, 600);this.setTitle("繪圖窗口");// super.setTitle("我的第一個窗口");this.setResizable(false);this.setLocationRelativeTo(null);// 窗口居中this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 設置默認的關閉操作lineButton = new JButton("Line");ovalButton = new JButton("Oval");recButton = new JButton("Rectangle"); // recButton.addActionListener(new ActionListener() { // // @Override // public void actionPerformed(ActionEvent e) { // rec = new Rectangle(); // rec.setStartX(MyUtil.random(0, 1000)); // rec.setStartY(MyUtil.random(0, 600)); // rec.setEndX(MyUtil.random(0, 1000)); // rec.setEndY(MyUtil.random(0, 600)); // repaint(); // // } // });// ovalButton.addActionListener(new ActionListener() { // // @Override // public void actionPerformed(ActionEvent e) { // oval = new Oval(); // oval.setStartX(MyUtil.random(0, 1000)); // oval.setStartY(MyUtil.random(0, 600)); // oval.setEndX(MyUtil.random(0, 1000)); // oval.setEndY(MyUtil.random(0, 600)); // repaint(); // // } // }); // lineButton.addActionListener(new ActionListener() { // /** // * 點擊按鈕后要執行的方法 // */ // @Override // public void actionPerformed(ActionEvent e) { // // line = new Line(); // line.setStartX(MyUtil.random(0, 1000)); // line.setStartY(MyUtil.random(0, 600)); // line.setEndX(MyUtil.random(0, 1000)); // line.setEndY(MyUtil.random(0, 600)); // // repaint(); // } // });// 需要放一個Action監聽器ActionListener handler=new ButtonHandler();lineButton.addActionListener(handler);ovalButton.addActionListener(handler);recButton.addActionListener(handler);this.setLayout(new FlowLayout());// 設置流式布局管理器this.add(lineButton);this.add(ovalButton);this.add(recButton);}@Overridepublic void paint(Graphics g) {super.paint(g);if(shape!=null){shape.draw(g);shape.calculate(g);} // if (line != null) { // line.draw(g); // } // if (rec != null) { // rec.draw(g); // } // if (oval != null) { // oval.draw(g); // }} }

測試類

package com.lovoinfo.ui;import java.awt.Color; import java.awt.FlowLayout; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;import javax.swing.JButton; import javax.swing.JFrame;import com.lovoinfo.shape.Line; import com.lovoinfo.shape.Oval; import com.lovoinfo.shape.Rectangle; import com.lovoinfo.shape.Shape; import com.lovoinfo.util.MyUtil;@SuppressWarnings("serial") public class MyFrame extends JFrame {private class ButtonHandler implements ActionListener{@Overridepublic void actionPerformed(ActionEvent e) {String command=e.getActionCommand();if(command.equals("Line")){shape=new Line();}else if(command.equals("Oval")){shape=new Oval();}else{shape=new Rectangle();}shape.setStartX(MyUtil.random(0, 1000));shape.setStartY(MyUtil.random(0, 600));shape.setEndX(MyUtil.random(0, 1000));shape.setEndY(MyUtil.random(0, 600));// shape.setColor(MyUtil.randomColor());shape.setColor(Color.black);repaint();}}private JButton lineButton;private JButton ovalButton;private JButton recButton;// private Line line = null; // private Rectangle rec = null; // private Oval oval = null;private Shape shape=null;public MyFrame() {this.setSize(1000, 600);this.setTitle("繪圖窗口");// super.setTitle("我的第一個窗口");this.setResizable(false);this.setLocationRelativeTo(null);// 窗口居中this.setDefaultCloseOperation(EXIT_ON_CLOSE);// 設置默認的關閉操作lineButton = new JButton("Line");ovalButton = new JButton("Oval");recButton = new JButton("Rectangle"); // recButton.addActionListener(new ActionListener() { // // @Override // public void actionPerformed(ActionEvent e) { // rec = new Rectangle(); // rec.setStartX(MyUtil.random(0, 1000)); // rec.setStartY(MyUtil.random(0, 600)); // rec.setEndX(MyUtil.random(0, 1000)); // rec.setEndY(MyUtil.random(0, 600)); // repaint(); // // } // });// ovalButton.addActionListener(new ActionListener() { // // @Override // public void actionPerformed(ActionEvent e) { // oval = new Oval(); // oval.setStartX(MyUtil.random(0, 1000)); // oval.setStartY(MyUtil.random(0, 600)); // oval.setEndX(MyUtil.random(0, 1000)); // oval.setEndY(MyUtil.random(0, 600)); // repaint(); // // } // }); // lineButton.addActionListener(new ActionListener() { // /** // * 點擊按鈕后要執行的方法 // */ // @Override // public void actionPerformed(ActionEvent e) { // // line = new Line(); // line.setStartX(MyUtil.random(0, 1000)); // line.setStartY(MyUtil.random(0, 600)); // line.setEndX(MyUtil.random(0, 1000)); // line.setEndY(MyUtil.random(0, 600)); // // repaint(); // } // });// 需要放一個Action監聽器ActionListener handler=new ButtonHandler();lineButton.addActionListener(handler);ovalButton.addActionListener(handler);recButton.addActionListener(handler);this.setLayout(new FlowLayout());// 設置流式布局管理器this.add(lineButton);this.add(ovalButton);this.add(recButton);}@Overridepublic void paint(Graphics g) {super.paint(g);if(shape!=null){shape.draw(g);shape.calculate(g);} // if (line != null) { // line.draw(g); // } // if (rec != null) { // rec.draw(g); // } // if (oval != null) { // oval.draw(g); // }} }

總結

以上是生活随笔為你收集整理的Java画图(直线,矩形,椭圆),并显示其周长面积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。