经过多次搜索,我可以找到任何解决方案,并希望寻求帮助。提前谢谢。
我有一个带有HBox的FXML,带有几个按钮(new,show,edit)。每个按钮都有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
答案 0 :(得分:0)
这必须是由<fx:root>
标记引起的
我已经为上述任务创建了一个示例项目。访问QHeaderView::setSectionResizeMode项目。克隆它并参考。我想你可以理解它。 GitHub