看截图:
为什么我创建了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);//填充矩形,坦克轮
            }

解决方案 »

  1.   

    额,我刚用CSDN,不知道哪些网站上的图可以传还有问题在哪?我的软件设置有问题?
      

  2.   

    图片在这里能看【http://zhidao.baidu.com/question/305890916.html】
      

  3.   

    Panel的默认布局好象是FlowLayout,所以第二个问题你这么改试试
    Janel jp = new Janel(new BorderLayout());
      

  4.   

    你的坦克类首先得实现线程接口  Runnable  先new一个向量 最好是Vector 然后用for循环创建坦克 没创建一个  就开启一个线程
      

  5.   

    我试过了,还是不行。主类代码如下:
    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、图 使用了布局管理器设置位置}