我正在尝试编写一个代码,使用javafx以预定但不规则的间隔在屏幕上显示内容.我试图使用一个计时器(java.util,而不是javax.swing),但事实证明,如果你是从一个单独的线程工作,你不能改变应用程序中的任何东西.(像一个计时器)任何人都可以告诉我我怎么能如果它们都是单独的线程,那么让Timer与应用程序进行交互?
我是这里的新人:)
我有一个小问题,涉及JavaFX中的绑定.我创建了一个作为时钟工作的Task,并返回必须在特殊标签(label_Time)中设置的值.此标签显示了测验中玩家回答的剩余时间.
问题是如何使用计时器任务自动更改标签中的值?我尝试以这种方式将来自计时器任务(秒)的值链接到label_Time值...
label_Time.textProperty().bind(timer.getSeconds());
Run Code Online (Sandbox Code Playgroud)
......但它不起作用.做这件事有什么办法吗?
在此先感谢您的回答!:)
Controller类中的Initialize方法:
public void initialize(URL url, ResourceBundle rb) {
Timer2 timer = new Timer2();
label_Time.textProperty().bind(timer.getSeconds());
new Thread(timer).start();
}
Run Code Online (Sandbox Code Playgroud)
任务类"Timer2":
public class Timer2 extends Task{
private static final int SLEEP_TIME = 1000;
private static int sec;
private StringProperty seconds;
public Timer2(){
Timer2.sec = 180;
this.seconds = new SimpleStringProperty("180");
}
@Override protected StringProperty call() throws Exception {
int iterations;
for (iterations = 0; iterations < 1000; iterations++) {
if (isCancelled()) {
updateMessage("Cancelled"); …Run Code Online (Sandbox Code Playgroud) 我读过这本书,但我仍然对暂停过渡方法感到困惑.我制作了一个显示数字的标签,我希望每秒都能增加这个数字.
为JavaFX使用Swing计时器是否安全?或者Swing有一个特殊的替代方案吗?JavaFX和Swing之间的线程管理有何不同?
其实我想知道的当量摇摆定时器,SwingUtilities.invokeLater()并invodeAndWait()为JavaFX.
顺便说一句,如果我们在JavaFX中使用一些Swing组件呢?我们应该使用两个并行的定时器/线程来更新这些组件吗?
我必须在新德里,香港,法兰克福,华盛顿等不同地方的屏幕上显示多个时钟.这些时间正在像其他任何真正的时钟一样变化,但是作为时间 - 左到固定的日期时间,它们被添加到用户添加它们时在不同时刻的屏幕.例如:
New Delhi 1d 4h 20 min 5s
Hong Kong 9h 2min 55s
Washington 22min 3s
...
Run Code Online (Sandbox Code Playgroud)
我有一个类,它使所有的计算以这种格式获得那些时间.当这些时间显示在屏幕上时出现问题.如何让他们同时更新时间?因此,秒中的所有更改都会同时显示.我知道理论上它不会在同一时间,但最接近它.这是我正在使用的计时器:
Timer t = new Timer();
t.scheduleAtFixedRate(
new TimerTask()
{
public void run() {
Platform.runLater(new Runnable() {
@Override
public void run() {
label[id].setText(getTimeLeft(id));
}
});
}
},
0, // run first occurrence immediately
1000); // run every seconds
Run Code Online (Sandbox Code Playgroud)
此外,他们中的一些最终冻结.有没有人知道为什么?