0
私は現在、マルチスレッドを使用してログインした後、次のページに進む前に点滅するラベル「ロード」を一定期間表示するアプリケーションを作成しています。ここに私の現在の進行状況は次のとおりです。JavaFXマルチスレッドの問題
public class LoadingController implements Initializable {
@FXML
private Label loadingLabel;
boolean ready = false;
public void setReady() {
System.out.println("now I'm ready");
ready = true;
}
public void showLabel() {
this.loadingLabel.setVisible(true);
}
public void hideLabel() {
this.loadingLabel.setVisible(false);
}
public void goToPage2() {
try {
Parent root = FXMLLoader.load(getClass().getResource("Page2.fxml"));
Scene scene = new Scene(root);
Stage stage = Assignment.getStage();
stage.setScene(scene);
} catch (IOException ex) {
Logger.getLogger(LoadingController.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
System.out.println("In loading page");
// TODO launch thread
Thread2 thread = new Thread2(this);
thread.start();
}
}
public class Thread2 extends Thread {
private LoadingController con;
public Thread2(LoadingController con) {
this.con = con;
}
public void run() {
System.out.println("Hello from a thread!");
try {
for (int i = 0; i < 20; i++) {
con.hideLabel();
Thread.sleep(100);
con.showLabel();
Thread.sleep(100);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
con.setReady();
}
}
私は現在、このエラーが シーンシーン=新しいシーン(ルート)をラインに関するます。
スレッド「スレッド6」の例外java.lang.IllegalStateException:FXアプリケーションスレッドではありません。
誰でもこの問題に関するガイダンスを提供できますか? ありがとう