看截图:
为什么我创建了3个MyPanel对象(在JPanel上画坦克),结果只显示一个坦克?
还有,再看看我用//屏蔽的代码,用这些代码的话,一个坦克也不显示,这又是为什么?
PS:MyPanel 是一个 绘出一个坦克的类,我创建3个类(是在3个JPanel上吧?),再用上布局管理器,应该就是画出3个不同的坦克了吧?
我附上MyPanel类的代码:class MyPanel extends JPanel {
//覆盖JPanel的paint方法
public void paint(Graphics g){
//调用父类完成初始化,这句不能少
super.paint(g);
//把图画到JPanel上
g.setColor(Color.BLUE);//设置颜色
g.fill3DRect(0+50, 0+50, 20, 100,true);//填充矩形,坦克轮
g.setColor(Color.GREEN);
g.fillRect(20+50, 20+50, 41, 60);//填充矩形,坦克身体
g.setColor(Color.RED);
g.fillOval(30+50, 30+50, 20, 20);//圆,坦克帽
g.setColor(Color.BLACK);
g.fillRect(39+50, 10+50, 2, 30);//填充矩形,坦克口
g.setColor(Color.BLUE);
g.fillRect(60+50, 0+50, 20, 100);//填充矩形,坦克轮
}
为什么我创建了3个MyPanel对象(在JPanel上画坦克),结果只显示一个坦克?
还有,再看看我用//屏蔽的代码,用这些代码的话,一个坦克也不显示,这又是为什么?
PS:MyPanel 是一个 绘出一个坦克的类,我创建3个类(是在3个JPanel上吧?),再用上布局管理器,应该就是画出3个不同的坦克了吧?
我附上MyPanel类的代码:class MyPanel extends JPanel {
//覆盖JPanel的paint方法
public void paint(Graphics g){
//调用父类完成初始化,这句不能少
super.paint(g);
//把图画到JPanel上
g.setColor(Color.BLUE);//设置颜色
g.fill3DRect(0+50, 0+50, 20, 100,true);//填充矩形,坦克轮
g.setColor(Color.GREEN);
g.fillRect(20+50, 20+50, 41, 60);//填充矩形,坦克身体
g.setColor(Color.RED);
g.fillOval(30+50, 30+50, 20, 20);//圆,坦克帽
g.setColor(Color.BLACK);
g.fillRect(39+50, 10+50, 2, 30);//填充矩形,坦克口
g.setColor(Color.BLUE);
g.fillRect(60+50, 0+50, 20, 100);//填充矩形,坦克轮
}
Janel jp = new Janel(new BorderLayout());
public class O extends JFrame {
//定义
MyPanel mp,mp2,mp3;
JPanel jp;
//main方法
public static void main(String[] args) {
//创建对象
O demo = new O(); } //构造方法
public O(){
JButton jb = new JButton();
jp = new JPanel(new BorderLayout());
mp = new MyPanel();
mp2 = new MyPanel();
mp3 = new MyPanel();
jp.add(mp,BorderLayout.NORTH);
jp.add(mp2,BorderLayout.CENTER);
jp.add(mp3,BorderLayout.SOUTH);
this.add(jp); this.setBounds(200, 250, 400, 400);
this.setTitle("画图");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true); }
//注:我发现,绘图不显示的两种情况:1、图 加上了JPanel;2、图 使用了布局管理器设置位置}