2013-07-18 61 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'可能是一次實例變量初始化*。 –