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