使用javafx计时器制作秒表
我实际上有一个视频流应用程序,我想显示两个人聊天的时间。我使用了java.util类的Timer和TimerTask,但它给出的错误是“不在FX应用程序线程上”,这意味着我不能使用swing线程将文本设置为java FX组件。这就是我迄今为止所尝试的:-使用javafx计时器制作秒表,java,javafx,timer,Java,Javafx,Timer,我实际上有一个视频流应用程序,我想显示两个人聊天的时间。我使用了java.util类的Timer和TimerTask,但它给出的错误是“不在FX应用程序线程上”,这意味着我不能使用swing线程将文本设置为java FX组件。这就是我迄今为止所尝试的:- int timerx=0 //global variable private void timer(){ /*SHOWING TIME PASSED*/ int x=0; Timer timer = new Ti
int timerx=0 //global variable
private void timer(){
/*SHOWING TIME PASSED*/
int x=0;
Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("working");
setTime();
}
};
timer.schedule(timerTask, 50, 50);
}
并将javafx标签更新为:-
private void setTime(){
timerx = timerx +1;
Platform.runLater(new Runnable(){
public void run(){
time.setText(String.valueOf((timerx)));
System.out.println(time.getText());
}
});
}
我认为主要的问题是javafx组件不能更新,不能从swing线程访问。我很乐意得到任何帮助。
谢谢你你可以这样使用:
long timeStart = System.currentTimeMillis();
long timePassed = System.currentTimeMillis() - timeStart;
当聊天开始时,两个家伙聊了多长时间,比如:
long timeStart = System.currentTimeMillis();
long timePassed = System.currentTimeMillis() - timeStart;
这将得到经过的毫秒数。如果你想得到秒数,就把它除以1000。哦,如果你想把它放在线程上,就为这个东西创建一个线程。好的,谢谢大家的回答。我通过运行一个线程并使用算法来解决我的问题,该算法将以我想要的00:00:00格式显示时间。这是密码
private void startTime(){
if(timerStats==false)
{
timerStats = true;
timer = new Timer();
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("working" + x);
timersec ++;
Platform.runLater(new Runnable(){
public void run(){
if (timersec == 60)
{
timersec = 0;
timermin++;
}
if (timermin == 60)
{
timermin = 0;
timerhr++;
}
String seconds = Integer.toString(timersec);
String minutes = Integer.toString(timermin);
String hours = Integer.toString(timerhr);
if (timersec <= 9)
{
seconds = "0" + Integer.toString(timersec);
}
if (timermin <= 9)
{
minutes = "0" + Integer.toString(timermin);
}
if (timerhr <= 9)
{
hours = "0" + Integer.toString(timerhr);
}
time.setText(hours + ":" + minutes +":"+ seconds);
System.out.println(time.getText());
}
});
}
};
timer.schedule(timerTask, 50, 50); //lastone is time, milli second
}
}
private void startTime(){
if(timerStats==false)
{
timerStats=真;
定时器=新定时器();
TimerTask TimerTask=新TimerTask(){
@凌驾
公开募捐{
系统输出打印项次(“工作”+x);
timersec++;
Platform.runLater(新的Runnable(){
public void run(){
如果(timersec==60)
{
timersec=0;
timermin++;
}
如果(timermin==60)
{
timermin=0;
timerhr++;
}
字符串秒数=整数.toString(timersec);
字符串分钟数=整数.toString(timermin);
字符串小时数=整数.toString(timerhr);
如果(timersec那么你流式传输视频聊天?你可以按系统时间来计算。当聊天开始时,保存系统时间,然后你就可以计算聊天持续的时间。谢谢你的回答,但不是有一种简单的方法可以用线程来显示时间吗?我的意思是,目的只是显示视频流式传输的持续时间。@BetaRide I请更新代码。请看一看