2015-05-21 3 views
1

Для этой игры я делаю для класса Java, я хочу, дисплей таймера в углу, который подсчитывает от 0сделать таймер в разгаре

Я сделал переменную, которая представляет секунды, что ==> двойные сек = 0;

Моя идея состояла в том, что с помощью Timer объекта, где я мог бы увеличиваем переменную каждый второй и использовать метод repaint() на струне

Однако, я неправильно истолкованы, как работает объект таймера и после задержки, она подсчитывает быстро до бесконечности. Я понятия не имею, что делать сейчас. Подсказка будет оценена по достоинству.

Вот мой код, спасибо за любую помощь:

int delay = 5000; //milliseconds 
    ActionListener taskPerformer = new ActionListener() { 


    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     s=(int)s+1; 


    } 
    }; 
    new Timer(delay, taskPerformer).start(); 
    String t = "" + s; 
g.drawString(t, 100, 100); 
repaint(); 
+1

Swing Timer missing repaint() в ActionListener, [больше читайте в Oracle Tutorials] (http://docs.oracle.com/javase/tutorial/2d/advanced/index.html), здесь ежедневно задают вопрос 5-10 вопросы о paintComponent – mKorbel

ответ

0

Как о чем-то вроде этого: (вы, возможно, придется изменить его для ваших нужд)

boolean temp=true; 
long startTime = System.nanoTime(); 
while(temp){ 

    float time = (System.nanoTime()-startTime)/ 10000000.000f; 

    System.out.println(time); 
} 
0

Что вы можете попытаться сделать реализует интерфейс Runnable, а затем запускает новый поток класса, который вы используете для рисования ваших Компонентов. Поскольку Thread реализует интерфейс Runnable, вы сможете создать новую точку выполнения в программе, где вы можете вызвать задержку с Thread.sleep(), прежде чем перекрасить свои компоненты. Вот пример того, что вы должны стараться делать:

Thread thread = new Thread(ClassNameHere); 
    thread.start(); 

Если вы заинтересованы в попытке это, более подробную информацию можно найти на API на Threads и на интерфейсе Runnable.

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