У меня проблема в моей программе. Я хочу получить миллисекунду в реальном времени, равную 1000 за 1 секунду. Вот мой код:Java Swing.Timer получить в реальном времени миллисекунду
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Timer;
class lsen implements ActionListener{
int ms = 0;
int s = 0;
int m = 0;
public void actionPerformed(ActionEvent e){
this.ms++;
if(this.ms == 500){
this.s++;
this.ms = 0;
}
if(this.s == 60){
this.m++;
this.s = 0;
}
}
public int getMS(){
return this.ms;
}
public int getSS(){
return this.s;
}
public int getMM(){
return this.m;
}
}
public class stopwatch_main{
public static void main(String[] args) {
lsen l = new lsen();
Timer t = new Timer(0,l);
t. start();
while(true){
System.out.println(l.getMM()+":"+l.getSS()+":"+l.getMS());
}
}
}
Есть ли другой способ получения миллисекунды, а не объявлять целое и приращение его?
Если я правильно понял вас, ваше намерение состоит в том, чтобы метод 'actionPerformed' вызывался 1000 раз в секунду, а именно точно каждую миллисекунду. Это вряд ли возможно. Вы можете приблизиться к нему с собственным потоком и * занятым ожиданием *, но даже тогда это будет сложно. («Занятое ожидание» здесь действительно относится к нерегулируемому циклу while (true), который ближе всего к «реальному времени», который вы можете получить на Java, но вам вряд ли когда-либо придется это делать ...) – Marco13