私は単純な JavaFx プログラムを作成しようとしています。これは、時間をチェックし、1 時間ごとに何かを行うことを想定しています (最初はラベルのテキストのみを変更します)。しかし、私は常に時間をチェックすることに問題があります。Calendar クラスを使用しています。while(true) ループを書くと、プログラムは起動しますが何もしません。スレッドを使用する必要がありますか? 私はそれがおそらく些細な問題であることを知っていますが、私はそれを理解することができません.
助けてくれてありがとう(下に返信するべきか、この投稿を編集するべきかわかりませんでした)。リンクに基づいて独自のバージョンを作成することができました。
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
申し訳ありませんが、あなたの回答を有用とマークしませんでしたが、評判が低すぎます...