【发布时间】:2016-05-09 16:06:17
【问题描述】:
经过几次搜索,我可以找到任何解决方案,并想寻求帮助。提前致谢。
我有一个带有 HBox 的 FXML,带有几个按钮(新建、显示、编辑)。每个按钮都有 onAction 方法。它用于其他 2 个 FXML (A & B),我想重用这样的 HBox。
其他 2 个 FXML(A,B)有一些控件(tableview,...)
这是我尝试过的:
1) 不能选择导入 HBox FXML,因为必须在所有 FXML (a & b) 中执行更改。
2) 包括使用 fx:id:我将有一个专用于 HBox 的控制器,我希望在 A、B 控制器上拥有控件和方法。
3) 包括使用 fx:root:我认为这是实现此目的的方法,但我有错误。
Navigation.fxml 文件:
<fx:root spacing="5.0" type="HBox" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button fx:id="btnOpen" mnemonicParsing="false" onAction="#onActionOpen" text="Open" />
<Button fx:id="btnSave" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" onAction="#onActionSave" text="Save" />
<Separator visible="false" HBox.hgrow="ALWAYS" />
<Button fx:id="btnClose" layoutX="62.0" layoutY="10.0" mnemonicParsing="false" onAction="#onActionClose" text="Close" />
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</fx:root>
Pane1controller.java:
public Pane1Controller() {
System.out.println("Pane1_Controller");
NavigationController nav = new NavigationController();
System.out.println("NavigationController ... done");
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("pane1.fxml"));
System.out.println("setting root");
fxmlLoader.setRoot(this);
System.out.println("setting controller");
fxmlLoader.setController(this);
try {
System.out.println("loading fxml");
pnlMain = fxmlLoader.load();
System.out.println("done");
} catch (IOException exception) {
System.out.println("exception");
pnlMain = null;
throw new RuntimeException(exception);
}
System.out.println("done");
} ...
}
-
使用 setRoot ....
原因:java.lang.RuntimeException: javafx.fxml.LoadException: Root 值已指定。 文件:/C:/Users/ecejdap/data/DEV/dev.java.nb/Testfx_fxroot/dist/run573616745/Testfx_fxroot.jar!/testfx_fxroot/pane1.fxml
删除 setroot 引起:java.lang.RuntimeException:javafx.fxml.LoadException:已指定根值。 文件:/C:/Users/ecejdap/data/DEV/dev.java.nb/Testfx_fxroot/dist/run2127482879/Testfx_fxroot.jar!/testfx_fxroot/Navigation.fxml
实现这一目标的正确方法是什么?
感谢您的支持。 BR
【问题讨论】:
标签: javafx-8