2013-07-18 8 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

В настоящее время вы рисуете прямоугольник * шесть раз, а не пять ... но почему вы все так делаете? Вы рисуете его в одном месте все шесть раз. Чего вы ожидаете достичь? Обратите внимание, что вы увидите только разницу при вызове '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 случайных прямоугольников на каждой перерисовке, а не на 1 прямоугольник в 5 случайных местах (вот как я понял вопрос). Тем не менее, это более корректно, чем исходный код, поэтому +1 –

+0

@Heuster Вы правы. Я предполагаю, что первоначальное намерение состоит не в том, чтобы рисовать разные прямоугольники на каждой перерисовке, а скорее генерировать их на каком-то событии/заданной точке. –

+1

Обратите внимание, что, если «random», 'rX' и' rY' не используются в другом месте, они, вероятно, будут лучше как локальные переменные ... хотя 'random' может быть переменной экземпляра, инициализированной * один раз *. –

Смежные вопросы