wordpress企业门户网站,网站建设流程新闻,买权重网站,中国甘肃网要求
定义4个类#xff0c;MyShape、MyLine、MyRectangle和MyOval#xff0c;其中MyShape是其他三个类的父类。MyShape为抽象类#xff0c;包括图形位置的四个坐标#xff1b;一个无参的构造方法#xff0c;将所有的坐标设置为0#xff1b;一个带参的构造函数#xff0…要求
定义4个类MyShape、MyLine、MyRectangle和MyOval其中MyShape是其他三个类的父类。MyShape为抽象类包括图形位置的四个坐标一个无参的构造方法将所有的坐标设置为0一个带参的构造函数将所有的坐标设置为相应值每个坐标的设置和读取方法abstract void draw(Graphics g)方法。MyLine类负责画直线实现父类的draw方法MyRectangle负责画矩形实现父类的draw方法MyOval负责画椭圆实现父类的draw方法。编写一个应用程序使用上面定义的类随机选取位置和形状绘制20个图形。示例输出如图所示。
代码
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;abstract class MyShape{int x 0;int y 0;int z 0;int k 0;public MyShape(){;}public abstract void draw(Graphics g);
}class MyLine extends MyShape{Random rd new Random();Overridepublic void draw(Graphics g){g.drawLine(x,y,z,k);}public MyLine(){int _x rd.nextInt(200);int _y rd.nextInt(200);int _z rd.nextInt(200);int _k rd.nextInt(200);x _x;y _y;z _z;k _k;}
}class MyRectangle extends MyShape{Random rd new Random();Overridepublic void draw(Graphics g){g.drawRect(x,y,z,k);}public MyRectangle(){int _x rd.nextInt(200);int _y rd.nextInt(200);int _z rd.nextInt(200);int _k rd.nextInt(200);x _x;y _y;z _z;k _k;}
}class MyOval extends MyShape{Random rd new Random();Overridepublic void draw(Graphics g){g.drawOval(x,y,z,k);}public MyOval(){int _x rd.nextInt(200);int _y rd.nextInt(200);int _z rd.nextInt(200);int _k rd.nextInt(200);x _x;y _y;z _z;k _k;}
}class DrawComponent extends JComponent
{Overridepublic void paintComponent(Graphics g){for(int i0;i20;i) {if(i6) {MyOval mo new MyOval();mo.draw(g);}else if(i12) {MyRectangle mr new MyRectangle();mr.draw(g);}else {MyLine ml new MyLine();ml.draw(g);}}}
}class Game extends JFrame{Random rd new Random();public Game(){this.add(new DrawComponent());this.setSize(600,600);this.setTitle(Graphics);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setVisible(true);}
}public class Main1{public static void main(String [] args){new Game();}
}代码分析
使用抽象类覆写draw方法来绘画自定一个JComponent来调用各类的绘画方法