日期:2014-05-20  浏览次数:20653 次

JPanel怎么一开始不重画啊?
这是一个添加杂色的程序:
import   java.awt.*;
import   java.awt.image.*;

import   javax.swing.*;
import   java.util.*;

public   class   Modify1   extends   JPanel  
{

/**
  *   @param   args
  */
Image   img;
int[]   colors;
Random   ra=new   Random();
public   Modify1(int   w,int   h)
{
colors=new   int[w*h];
                for(int   i=0;i <w*h;i++)
                {
                int   r=Math.abs(ra.nextInt()%255);
                int   g=Math.abs(ra.nextInt()%255);
                int   b=Math.abs(ra.nextInt()%255);                
                colors[i]=255 < <24   |   r < <   16   |   g < <8   |   b;
                }
                img=this.createImage(new   MemoryImageSource(w,h,colors,0,w));
}
public   void   paintComponent(Graphics   g)
{
g.drawImage(img,0,   0,   this);
}
public   static   void   main(String[]   args)   {
JFrame   jf=new   JFrame();
jf.setSize(400,400);
Modify1   m=new   Modify1(400,400);
jf.setDefaultCloseOperation(3);
jf.setVisible(true);
                jf.setContentPane(m);
}

}
为什么当窗口显示时JPanel里什么也没有,而当我重新设置窗口大小时,就显示图片了.当然,我用m.setSize(400,400);后肯定是会显示的,但是我总觉得这样并不是根本解决了问题.因为有时候我写的程序又不会出现这种情况,有时候又会出现,真的是郁闷死我了.

------解决方案--------------------
正常 没有问题
------解决方案--------------------
jf.setVisible(true);
jf.setContentPane(m);
========================
这两句换过来