我知道我是个白痴,这就是为什么我无法弄清楚,但我正在尝试使用 paintComponent 绘制一堆具有随机大小和位置的矩形。我试图确保所有这些都画在框架内。我可以用下面的代码(片段)来完成,但我想知道是否有比我将数字硬编码到程序中更好的方法。有没有我应该看看的方法,这可能是我正在寻找的方法?
这是覆盖 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);
}
}
最佳答案
您应该根据 DrawPanel
组件大小来确定您的坐标和大小。同时使用 Random.nextInt而不是 Math.random()
将使它更容易保持在基于面板当前大小的范围内:
Random random = new Random();
int ht = random.nextInt(getHeight());
int wd = random.nextInt(getWidth());
int x = random.nextInt(getWidth() - wd);
int y = random.nextInt(getHeight() - ht);
关于java - 将矩形保留在 JFrame 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779500/