这是一个添加杂色的程序:
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);后肯定是会显示的,但是我总觉得这样并不是根本解决了问题.因为有时候我写的程序又不会出现这种情况,有时候又会出现,真的是郁闷死我了.