我正在尝试在我的Mediator上使用设计模式。为了让我的gui分离而不是将所有组件放在一个类中。
例如,您需要在使用其他GUI组件之前登录该程序。因此,创建一个Mediator类,创建每个GUI类的实例,每个GUI类(Login,addUser,ShowUser)在更改窗口时都可以引用。
public class Mediator {
public Login login;
public AddUser add;
public ShowUsers su;
public Stage stage = new Stage();
public Mediator(){
login = new Login(this);
add = new AddUser(this);
su = new ShowUsers(this);
}
public void showUser() throws Exception{
su.start(stage);
}
}
public class ShowUsers extends Application{
private Mediator m;
private Stage stage = new Stage();
public ShowUsers(Mediator m){
this.m =m;
}
@Override
public void start(Stage stage) throws Exception {
Group root = new Group();
Scene scene = new Scene(root);
stage.setScene(scene);
}
}
我得到了一个说法: 线程中的异常“main”java.lang.IllegalStateException:不在FX应用程序线程上; currentThread = main
如果我想使用调解员,我如何解决这个问题?
更新
public class Main {
public static void main(String[] args) throws Exception{
Mediator m = new Mediator();
m.showUser();
}
}
答案 0 :(得分:1)
使用Application.launch启动Java FX应用程序。我不认为你可以为每个JVM启动多个应用程序,但我没有尝试过(你为什么要这样做?)。当然,每个应用程序可以有几个阶段。
编辑: 实际上Javadoc说: “不得多次调用它,否则将抛出异常。”
http://docs.oracle.com/javafx/2/api/javafx/application/Application.html#launch(java.lang.String ...)
答案 1 :(得分:0)