我有一个带有 main.fxml 的 FXML 应用程序,其中包括另外两个 fxml 文件。这些 fxml 文件中的每一个都有自己的控制器类。
我的问题是,如何从特定控制器访问对象,尽管这些对象是在另一个 fxml 文件中定义的。
以下代码只是一个最小的示例。我认为将 ui 元素拆分为不同的 fxml 文件是个好主意,因为它们越来越大。
我的主要 fxml:
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<fx:include fx:id="top" source="top.fxml"/>
<fx:include fx:id="bottom" source="bottom.fxml"/>
</VBox>
顶部.fxml:
<VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ControllerTop">
<children>
<Button fx:id="topbtn" onAction="#printOutput" text="OK" />
</children>
</VBox>
底部.fxml
<VBox fx:id="vbox" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="ControllerBottom">
<children>
<Button fx:id="bottombtn" onAction="#printOutput" text="OK" />
</children>
</VBox>
对于 top.fxml,我创建了这个控制器类:
public class ControllerTop {
@FXML public Button topbtn;
@FXML public Button bottombtn;
@FXML
public void printOutput() {
System.out.println("Hello from top button");
topbtn.setDisable(true); //OK!
bottombtn.setDisable(false); //Failed
}
}
当然bottombtn是在bottom.fxml中定义的,并且有自己的控制器。问题是,这个ControllerTop 的printOut() 的bottombtn 会导致NullPointerException。所以我需要帮助,以一种漂亮而聪明的方式访问对象。
开满天机
相关分类