下面的代码一开始运行的时候为什么会显示出桌面的背景出来呢,要改变窗口大小时才可以显示出JFrame自己的背景出来????
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame
{
 public Test()
 {
  super("Test");
  this.setSize(400,300);
  this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  this.setLayout(new FlowLayout());
  this.setVisible(true);
 }
 public void paint(Graphics g)
 {
  g.drawLine(0,0,100,100);
 }
 public static void main(String args[])
 {
  new Test();
 }
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【aheqq】截止到2008-07-02 01:59:27的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:40                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:40                       
    结贴的百分比:0.00  %               结分的百分比:0.00  %                  
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    看注释,加一行super.paint(g);
    import java.awt.FlowLayout;
    import java.awt.Graphics;import javax.swing.JFrame;
    public class Test extends JFrame
    {
        public Test()
        {
            super("Test");
            this.setSize(400, 300);
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            this.setLayout(new FlowLayout());
            this.setVisible(true);
        }    public void paint(Graphics g)
        {
            //加这一行就好了
            super.paint(g);
            g.drawLine(0, 0, 100, 100);
        }    public static void main(String args[])
        {
            new Test();
        }
    }
      

  3.   

    因为你继承的JFrame本身就有public void paint(Graphics g),这个方法是用来绘制其自身的,你将该方法覆盖后
    将只绘制你的paint(Graphics g)里要绘制的东西,不会绘制别的东西,所以你要 添加super.paint(g);来绘制JFrame本身要绘制的东西才行