2013-07-18 60 views
0

这里只是我的代码的一部分,它不工作,因为我想。当矩形是在循环绘制,它是每次绘在同一个地方,尽管我用随机数为X和Y轴。我想绘制矩形5次(因为它设置在循环中),每个都随机坐标。如果需要整个代码,请让我知道。谢谢!爪哇 - 矩形的随机产卵

public void paintComponent(Graphics g){ 
    random=new Random(); 
    rX=random.nextInt(500); 
    rY=random.nextInt(500); 
    super.paintComponent(g);  

     for(int i=0;i<=5;i++){ 
     g.fillRect(rX,rY,20,20); 
     } 


    g.setColor(Color.red); 
    g.fillOval(x,y,20,20); 

} 
+2

您目前正在绘制长方形*六倍而不是五倍......但为什么你要这样做呢?你六次在同一个地方绘画。你期望达到什么目标?请注意,当调用paintComponent时,您只会看到不同之处,这可能会低于用户可预测的100%。 –

+0

这是我的问题,所有的矩形都绘在同一个地方:) –

回答

3

目前你的代码只只产生一个时间坐标。 (感谢Jon Skeet指出)

如果你想要它画五个不同的三角形,你应该把呼叫移到循环内的random.nextInt

public void paintComponent(Graphics g){ 
    random=new Random(); 

    super.paintComponent(g);  

    for(int i=0; i<=4; i++){ 
     rX=random.nextInt(500); 
     rY=random.nextInt(500); 
     g.fillRect(rX,rY,20,20); 
    } 


    g.setColor(Color.red); 
    g.fillOval(x,y,20,20); 

} 
+0

这将绘制每个重绘6个随机矩形,而不是5个随机位置的1个矩形(这就是我理解问题的方式)。不过,这比原来的代码更正确,所以+1 –

+0

@Heuster你是对的。我想最初的意图不是在每次重绘时画出不同的矩形,而是在某个事件/指定点上生成它们。 –

+1

请注意,除非'random','rX'和'rY'在其他地方使用,否则它们可能会更好,因为局部变量......尽管'random'可能是一次实例变量初始化*。 –