2010-08-11 2 views
0

Итак, когда пользователь нажимает на мой JButton, он выбирает случайное время, и по прошествии этого времени он будет рисовать овал на экране. Однако с тем, что у меня есть сейчас, он рисует овал сразу после нажатия кнопки. Я хочу, чтобы он появился после случайного времени.Java drawOval после случайного времени, когда пользователь нажал Jbutton

public void actionPerformed(ActionEvent e) 
    { 
    if (e.getSource() == startButton) 
    { 
     popUpTime = random.nextInt(5000); 
     timer = new Timer(popUpTime, this); 

     x = random.nextInt(400) + 70; 
      y = random.nextInt(400) + 100; 

      points[current++] = new Point(x, y); 

     timer.start(); 
     start(); 

     repaint(); 
    } 


    } 

ответ

0

Вы можете использовать функцию сна из класса Thread в заставьте программу ждать случайного времени. Что-то вроде этого:

try{ 
Thread.sleep(PopUpTime); 
} 
catch(Exception e) 
{} 
// and then compute new points and repaint 
+0

Это не очень хорошая идея, вы блокируете тему Dispatch Event. –

0

Проблема ваша логика:

if event is start button, then setup oval and timer and call repaint(); 

перекрашивать является предположительно рисунок вашего овала при заданных координатах.

Вы, вероятно, должны сделать что-то вроде этого:

if (e.getSource() == startButton) { 
    drawOval = false; // flag to repaint method to NOT display oval 
    // setup timer 
    repaint(); // oval will not be drawn 
else { 
    // assuming timer has fired (which is a bit weak) 
    x = ....; 
    y = ...; 
    drawOval = true; 
    repaint(); // oval will be drawn. 
} 

Ваш метод перекрасить() необходимо проверить настройки drawOval:

public void repaint() { 
    if (drawOval) { 
    // draw it 
    } else { 
    // may need to clear oval 
    } 

    // draw other stuff. 
} 
+0

где бы я поставил таймер? – Raptrex

+0

Комментарий '// setup timer' - это то место, где я имел в виду, что вы его кладете. –

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