初学Java,在书上看到一个例子
import java.awt.*;import javax.swing.*;public class ch {
public static void main(String[] args){
   JFrame frame = new JFrame();
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setVisible(true);
           frame.setTitle("Room");
       frame.setSize(400, 400);
   
       Container w=frame.getContentPane();
       Graphics g=w.getGraphics();
       g.drawRect(50,50, 100, 100);
    }
}
请问,为什么没有图形输出,是输出后马上就消失了还是根本就没有输出图形?希望大家帮忙,谢谢?

解决方案 »

  1.   

    首先,按照你的源码运行,有图形输出,这个没任何问题,你在eclipse下和命令行下都能看到,但是图形输出没有你画的那个矩形,是因为你画矩形的位置不对,你写的方法也执行了,但是只执行一次,无法在GUI界面稳定输出,给你一个可以画出矩形的代码import java.awt.*;import javax.swing.*;public class Ch extends JFrame{
        @Override
        public void paint(Graphics g){
            super.paint(g);
            g.setColor(Color.RED);
            g.drawRect(50,50, 100, 100);
        }
        public static void main(String[] args){
            JFrame frame = new Ch();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
            frame.setTitle("Room");
            frame.setSize(400, 400);        
        }
    }
      

  2.   

    不是矩形位置不对,是你写的代码画矩形的问题,应该覆盖父类的paint方法,照我写的那样做你写的那个结构,不可能让矩形稳定输出,我想问你你运行了我给你贴的代码没有?
      

  3.   

    你要理解paint方法的意义,这是关键,单纯在main那里面调用绘制图形是不管用的啊如果没有问题了,就结贴吧
      

  4.   

    唔~~~楼主没有重写paint方法呢~~~再接再厉