gpt4 book ai didi

java - 访问 JavaFX 中的 Controller ,然后执行另一个类中的函数

转载 作者:行者123 更新时间:2023-12-01 10:25:21 24 4
gpt4 key购买 nike

因此,当我尝试运行 java 代码时,我收到错误

线程“AWT-EventQueue-0”中出现异常 java.lang.IllegalStateException:不在 FX 应用程序线程上;当前线程 = AWT-EventQueue-0

LoginController.java

public class LoginController {

public void onSessionLoginAction() {
//I have some functions here so i just minimize a bit of the code
loginUser();
}

public void loginUser() {
Init.getInstance().hideWindow("login"); // Error <---
Init.getInstance().setEnabled(true); // Error <---
Init.getInstance().run(); // Success <--
}
}

初始化.java

public abstract class Init extends Application {

private static Init instance;
private boolean isEnabled = false;
private Timer timer;

public void initialize(Stage stage) {
instance = this;

// Login with session if you can :) Success to run this code here
timer = new Timer(50, new ActionListener() {
public void actionPerformed(ActionEvent e) {
FXMLLoader loader = loginWindow.getFxmlLoader();
LoginController loginController = loader.<LoginController>getController();
loginController.onSessionLoginAction(); //This runs the session on LoginController.java
timer.stop();
}
});
timer.start();
}

public void setEnabled(boolean flag) {
isEnabled = flag;
}

public static Init getInstance() {
return instance;
}
public abstract void run();
}

最佳答案

运行您的代码

Platform.runLater(new Runnable() {
@Override
public void run() {
loginController.onSessionLoginAction();
}
});

或使用Timeline而不是计时器

关于java - 访问 JavaFX 中的 Controller ,然后执行另一个类中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35382600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com