2013-07-18 5 views
0

여기 내 코드의 일부분이 내가 원하는대로 작동하지 않습니다. 루프에있는 사각형이 칠해지면, 매번 같은 장소에서 그려집니다. X 및 Y 축. 사각형을 5 번 (루프로 설정 한대로) 페인트하고 무작위로 지정합니다. 전체 코드가 필요하면 제발 알려주세요. 감사합니다!사각형의 Java- 랜덤 산란

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

현재 다섯 개가 아닌 6 개 시간이 그려져 있습니다 ...하지만 어쨌든 왜 그렇게하고 있습니까? 당신은 같은 장소에서 6 번 모두 그림을 그립니다. 달성하기 위해 무엇을 기대합니까? '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

이것은 5 개의 랜덤 한 위치에서 1 개의 직사각형 대신 6 개의 랜덤 직사각형을 그릴 것이다. 그래도 원래의 코드보다 정확하기 때문에 +1 –

+0

@Heuster 맞습니다. 나는 원래의 의도가 모든 repaint마다 다른 사각형을 페인트하는 것이 아니라 오히려 이벤트/지정된 지점에서 생성하는 것이라고 생각합니다. –

+1

'random','rX'와'rY'가 다른 곳에서 사용되지 않는다면 아마 로컬 변수처럼 좋을 것입니다. 왜냐하면'random'은 초기화 된 인스턴스 변수가 될 수 있습니다. –