javafx-2 - 访问 FXML Controller 类

标签 javafx-2 fxml

我想随时与 FXML Controller 类进行通信,以更新主应用程序或其他阶段屏幕上的信息。

这可能吗?我还没有找到任何方法来做到这一点。

静态函数可能是一种方法,但它们无权访问表单的控件。

有什么想法吗?

最佳答案

您可以从FXMLLoader获取 Controller

FXMLLoader fxmlLoader = new FXMLLoader();
Pane p = fxmlLoader.load(getClass().getResource("foo.fxml").openStream());
FooController fooController = (FooController) fxmlLoader.getController();

将其存储在主阶段并提供 getFooController() getter 方法。
从其他类或阶段,每次需要刷新加载的“foo.fxml”页面时,请从其 Controller 请求它:

getFooController().updatePage(strData);

updatePage() 可以是这样的:

// ...
@FXML private Label lblData;
// ...
public void updatePage(String data){
    lblData.setText(data);
}
// ...

在 FooController 类中。
这样,其他页面用户就不必关心页面的内部结构,例如 Label lblData 的位置和内容。

另请参阅 https://stackoverflow.com/a/10718683/682495 。在 JavaFX 2.2 中,FXMLLoader 得到了改进。

关于javafx-2 - 访问 FXML Controller 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10751271/

相关文章:

JavaFX ScrollPane - 加速触摸设备上的滑动效果

java - 如何验证 JavaFX 2.0 在 XP 机器上使用 directx 9?

java - 动态加载指向由 FXML 构造的多边形的点

javafx-2 - 在 JavaFX 文本节点周围绘制边框

javafx-2 - 如何阻止控件使用 KeyEvent?

java - IllegalStateException 未捕获

javafx - 如何使用FXML创建Integer微调器

javafx - 选择组合框项目时执行操作 FXML

Javafx/FXML : conflict between initialize() method and FXML Loader:Initialize: NullPointerException, FXML.LoadException

java - 尝试在根布局中的 Pane 之间切换时出现 NullPointer