私はJavaFxで頭を壊してきました...
これは、実行中のアプリケーションのインスタンスがない場合に機能します。
public class Runner {
public static void main(String[] args) {
anotherApp app = new anotherApp();
new Thread(app).start();
}
}
public class anotherApp extends Application implements Runnable {
@Override
public void start(Stage stage) {
}
@Override
public void run(){
launch();
}
}
しかし、別のアプリケーションnew Thread(app).start()
内で実行すると、2回の起動を実行できないという例外が発生します。
また、私のメソッドは、次のような他のアプリケーションのオブザーバーによって呼び出されます。
@Override
public void update(Observable o, Object arg) {
// new anotherApp().start(new Stage());
/* Not on FX application thread; exception */
// new Thread(new anotherApp()).start();
/* java.lang.IllegalStateException: Application launch must not be called more than once */
}
これは、次のようなJavaFXクラス内にあります。
public class Runner extends Applications implements Observer {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage){
//...code...//
}
//...methods..//
//...methods..//
@Override
public void update(Observable o, Object arg) {
//the code posted above//
}
}
リスナーでObjectPropertiesを使用してみましたが、機能しませんでした。何らかの方法で、java.util.observerのupdateメソッド内からこの新しいステージを実行する必要があります。
どんな提案も歓迎します。ありがとう。