0
外部スレッド(主スレッドからではありません)からjavafxで新しいウィンドウ(ステージ)を開きたいとします。私のコードはうまくいきません、助けてください。Javafxの外部スレッドから新しいウィンドウを開く
これは私のJavaコードです:
public void login(ActionEvent event)
{
Task task = new javafx.concurrent.Task<Void>()
{
@Override
protected Void call() throws Exception
{
loader.setVisible(true);
if(Compte.login(username.getText(), password.getText()))
{
Parent root = FXMLLoader.load(getClass().getResource("/views/PrincipalFram.fxml"));
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setScene(scene);
stage.setTitle("My Title");
stage.show();
}
else
{
//TODO
}
return null;
}
@Override
protected void succeeded()
{
loader.setVisible(false);
}
@Override
protected void failed()
{
loader.setVisible(false);
}
};
Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();
}
なぜあなたはここでバックグラウンドスレッドを使用していますか?実行するには時間がかかります。 JavaFX [here](http://stackoverflow.com/questions/30249493/using-threads-to-make-database-requests)のマルチスレッドに関する一般的なコメントが役立つかどうかを確認してください。 –
私はサーバー上の私のデータベースに要求を送るログインボタンを持っています。スレッド内で実行する方がよいでしょう。 –
OKですが、* only *はバックグラウンドスレッド内で行う必要があります。 UI作業は、FXアプリケーションスレッドで行う必要があります。 –