JPanel怎么一开始不重画啊?

hoverlees 2007-04-17 07:03:55
这是一个添加杂色的程序:
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);后肯定是会显示的,但是我总觉得这样并不是根本解决了问题.因为有时候我写的程序又不会出现这种情况,有时候又会出现,真的是郁闷死我了.
...全文
237 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoverlees 2007-04-17
  • 打赏
  • 举报
回复
郁闷,可能是我当时晕了 .......
CrazyGou 2007-04-17
  • 打赏
  • 举报
回复
jf.setVisible(true);
jf.setContentPane(m);
========================
这两句换过来
insiku 2007-04-17
  • 打赏
  • 举报
回复
正常 没有问题

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧