我正在尝试编写一个简单的 JavaFx 程序,它假设检查时间并且每隔一整小时做一些事情(起初只更改标签中的文本)。但是我经常检查时间有问题。我正在使用日历类。如果我写了一个 while(true) 循环,程序会启动但什么也不做。我应该使用线程吗?我知道这可能是微不足道的问题,但我无法弄清楚,我对此有点陌生;p
谢谢大家的帮助(我不知道我应该在下面回复还是编辑这篇文章)。我设法创建了我自己的版本,我基于链接,你给了我。
public class Trening extends Application {
@Override
public void start(Stage primaryStage) {
Task<Integer> task = new Task<Integer>() {
@Override
protected Integer call() throws Exception {
Calendar tajm = Calendar.getInstance();
int hour = tajm.get(Calendar.HOUR_OF_DAY);
int minutes = 0;
updateMessage(Integer.toString(hour));
while (true) {
try {
minutes = 60 - tajm.get(Calendar.MINUTE);
Thread.sleep(minutes * 60000);
if (tajm.get(Calendar.HOUR_OF_DAY) != hour) {
hour = tajm.get(Calendar.HOUR_OF_DAY);
updateMessage(Integer.toString(hour));
} else {
}
} catch (InterruptedException ie) {
//System.err.print("...");
}
}
}
};
Label btn = new Label();
btn.textProperty().bind(task.messageProperty());
new Thread(task).start();
StackPane root = new StackPane();
root.getChildren().add(btn);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("...");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* The main() method is ignored in correctly deployed JavaFX application.
* main() serves only as fallback in case the application can not be
* launched through deployment artifacts, e.g., in IDEs with limited FX
* support. NetBeans ignores main().
*
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}}
就像我说的那样,我对编程很陌生,所以我很欣赏每一条建议。非常感谢您的帮助,如果您对我所写的内容有任何建议,我不会介意;p
抱歉,我没有将您的答案标记为有用,但我的声誉太低了......