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);
} 展开
第一个: 用来实例化一个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);
} 展开
2个回答
2013-10-16
展开全部
在paint事件中。
追问
能详细一点吗..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
核心代码是你的panel类 给我看看你的panel类怎么写的
追问
追问字数有限制 我在问题补充里把panel的代码附上了, 帮忙看一下
追答
类中加一个属性 int count = 0;
calculation方法中加入语句 count++;
drawWeb方法里面在calculation();外面套个判断
if(count==0){calculation();}
根本原因是画图是一个不断循环的线程,你的drawWeb方法会一直执行。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询