java - 如何引用 primaryStage

标签 java javafx javafx-2 fxml

<分区>

我将 .fxml-Files 用于我的应用程序的 View 层。每个 fxml 都附加了一个 Controller

<AnchorPane fx:controller="movielistjavafx.view.MainWindowController">

假设我有一个 mainFrame 及其 Controller 。 mainFrame.fxml 在 start(Stage) 方法中加载。

现在您想显示一个附加到舞台/窗口/任何东西的文件选择器。

为此最好让 fxml-controller 知道 例如 primaryStage

有没有办法将它注入(inject) Controller ,或者 FXML 在运行时知道它属于哪个场景和阶段?

我唯一的想法是将 primaryStage 存储在一些静态上下文中,但这对我来说似乎不是一种方法。

最佳答案

不是 FXML,而是 FXML(或其 Controller )中的节点(控件)在运行时(添加到场景后)知道它们属于哪个场景和阶段。
在 Controller 类中,

...
@FXML private Label label;
...
// in some method block
Stage stageTheLabelBelongs = (Stage) label.getScene().getWindow();

或者,您可以使用 CDI 事件来获取初级阶段。查看博客条目 FXML & JavaFX powered by CDI & JBoss Weld .

关于java - 如何引用 primaryStage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994366/

相关文章:

webview - 在页面加载之前在 JavaFX WebView 中注入(inject)桥接代码?

java - 无法在 Java 中使用 phantomJS 处理警报

java - XML 命名空间 - xmlns

Java日历如何验证日期

java - 替代注释?

java - 不消耗窗口按钮JavaFx的Keybord事件

javafx - 如何为javafx线同时设置颜色、宽度和绘制虚线?

java - 将 JavaFX 应用程序与 openjdk 11 + 运行时捆绑在一起

scroll - 如何在 setText 之后滚动 JavaFX TextArea

css - 将 hbox 定位到 javafx gridpane 中单元格的中心