【发布时间】:2012-12-08 16:42:22
【问题描述】:
我知道我是个白痴,这就是为什么我无法弄清楚但我正在尝试使用paintComponent 绘制一堆大小和位置随机的矩形。我试图确保所有这些都画在框架内。我可以使用以下代码(sn-p)来做到这一点,但我想知道是否有比我将数字硬编码到程序中更好的方法来做到这一点。有没有我应该看看的方法可能是我正在寻找的?
这是覆盖paintComponent()方法的内部类:
class DrawPanel extends JPanel {
public void paintComponent(Graphics g) {
int red = (int)(Math.random()*256);
int blue = (int)(Math.random()*256);
int green = (int)(Math.random()*256);
g.setColor(new Color(red, blue, green));
//The following 4 lines keep the rects within the frame
//The frame is 500,500
int ht = (int)(Math.random()*400);
int wd = (int)(Math.random()*400);
int x = (int)(Math.random()*100);
int y = (int)(Math.random()*100);
g.fillRect(x,y,ht,wd);
}
}
【问题讨论】:
-
你有什么问题?您确定要在
paintComponent(...)内进行随机化,这样无论何时出于任何原因重新绘制 gui,矩形都会发生变化。你确定不想调用super.paintComponent(...)方法吗? -
另外,你不应该使用 DrawPanel 的
getSize()而不使用 JFrame 的大小吗?否则你会忽略它的标题栏等...... -
查看相关示例here。
-
感谢 Reimeus、气垫船和卢卡斯。该程序甚至可以像以前那样工作。编码很丑,正如你们指出的那样,也有点错误。
标签: java swing user-interface jframe paintcomponent