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);
========================
这两句换过来