java:JPanel的内容如何不随窗口变化而变

有两个类:第一个:用来实例化一个JFrame,核心代码如下:JFrameframe=newJFrame();frame.setDefaultCloseOperation(... 有两个类:
第一个: 用来实例化一个JFrame,核心代码如下:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new MyJPanel());
frame.pack();
frame.setVisible(true);
frame.setMinimumSize(new Dimension(640,480));
第二个: MyJPanel.java里用一个随机数(注意是随机数)的数组画了个矩形.具体代码也很简单就不贴了
问题如下: 运行后,每当窗口大小变化后, 这个矩形就变化, 也就说明随机数组被重新计算了. paintComponent()这个方法被重新执行了.
需求: 如何能让这个随机数组只计算一次呢? 如何才能拉大窗口而不使矩形变化呢?
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D G2D = (Graphics2D) g;
drawWeb(G2D);

}
private void drawWeb(Graphics2D g2d) {
calculation();
g2d.drawRect(X, Y, width, height);

}

public static void calculation(){
X = (int) (Math.random()*100);
Y = (int) (Math.random()*100);
height = (int) (Math.random()*100);
width = (int) (Math.random()*100);
}
展开
 我来答
匿名用户
2013-10-16
展开全部
在paint事件中。
追问
能详细一点吗..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
w603257390
2013-10-16 · 超过12用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:37.5万
展开全部
核心代码是你的panel类 给我看看你的panel类怎么写的
追问
追问字数有限制 我在问题补充里把panel的代码附上了, 帮忙看一下
追答
类中加一个属性  int count = 0;
calculation方法中加入语句 count++;
drawWeb方法里面在calculation();外面套个判断
if(count==0){calculation();}

根本原因是画图是一个不断循环的线程,你的drawWeb方法会一直执行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式