2016-10-26 7 views
-1

Я пытаюсь имитировать таймер. Поэтому, нажав кнопку в форме JFrame, я хочу, чтобы таймер отсчитывал от 10 до 0. Я хочу, чтобы оно было ровно 10 секунд. Я не хочу искать прошедшее время для любых кодов, так как все коды, которые я нашел, до сих пор дают прошедшее время. Например, используя System.nanoTimer().имитирующий таймер в java

Я попытался сделать это:

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here:timer 
    long startTime = System.nanoTime();  
    // ... the code being measured ... 
    long targetTime=startTime+10000; 
    while(System.nanoTime()<targetTime) 
    { 
     JOptionPane.showMessageDialog(this,targetTime-System.nanoTime()); 
    } 
    JOptionPane.showMessageDialog(this,"time's up"); 
}   

Но, конечно, это вряд ли показывает, сколько времени осталось один или два раза. Может ли кто-нибудь помочь мне с логикой?

+1

* "Я пытаюсь имитировать таймер." * ..why? Или более того, почему бы не использовать Swing 'Timer'? Для точности стреляйте по таймеру намного быстрее, чем один раз в секунду, и проверяйте время нано, чтобы действовать (изменить время). См. Также [Что такое проблема XY?] (Http://meta.stackexchange.com/q/66377). Также кажется, что модальный (диалог блокировки, появляющийся в каждом цикле 'while'), испортит ситуацию. Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –

ответ

0

10000 наносекунд составляет 10 миллисекунд, и это составляет 1/100 секунды. Использование:

System.currentTimeMilis 

вместо

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