我在Controller类中有以下方法:
public void popup() {
popupPane.setVisible(true);
}
如果我从另一个类调用此方法然后我得到一个空错误,我假设因为我正在创建一个没有我的窗格的新Controller实例,或者一个没有我的控制器的新弹出实例。无论如何,有没有办法做到这一点?我开始认为这不是Java中的技术可能性。
TLDR:使用Controller外部的类可以看到窗格 - 可能吗?
答案 0 :(得分:-2)
执行此操作的一种简单方法是获取javafx创建的控制器实例。您可以通过在Controller构造函数中将控制器实例存储为静态变量,然后通过静态变量访问控制器方法来实现此目的。
所以让你的控制器类如下:
public class MyController {
//this variable holds an instance of the class
public static MyController mInstance;
public MyController(){
//in the controller set the mInstance variable to the current instance
mInstance = this;
}
}
现在在另一个要访问方法的类中,在mInstance
变量上调用它MyController.mInstance.someMethod();
这将确保在javafx创建的控制器实例上调用该方法
请注意,您应该检查以确保在访问之前mInstance变量不为空。