从另一个类运行Controller方法

时间:2018-04-04 02:44:20

标签: java javafx

我在Controller类中有以下方法:

public void popup() {
    popupPane.setVisible(true);
}

如果我从另一个类调用此方法然后我得到一个空错误,我假设因为我正在创建一个没有我的窗格的新Controller实例,或者一个没有我的控制器的新弹出实例。无论如何,有没有办法做到这一点?我开始认为这不是Java中的技术可能性。

TLDR:使用Controller外部的类可以看到窗格 - 可能吗?

1 个答案:

答案 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变量不为空。