我在FXML中声明了一个带有一系列菜单项的菜单栏(包含图形,onClick方法链接等)。
现在我正在为表创建一个上下文菜单,并且我想在其中输入"编辑"的所有菜单项。菜单栏的菜单。
在FXML中有这样做的干嘛?
我不喜欢复制菜单项的所有FXML声明,并且必须维护这两组项目。 我知道如果我在Java代码中声明它们,我可以重用这些项目,但我想将所有布局保留在FXML中。
以下是编辑菜单的FXML,我不想复制:
<Menu text="_Edit">
<MenuItem onAction="#copyRaw" text="Copy _raw log">
<accelerator>
<KeyCodeCombination alt="UP" code="C" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
</accelerator>
<graphic>
<Glyph fontFamily="FontAwesome" icon="copy" />
</graphic>
</MenuItem>
<MenuItem onAction="#copyPretty" text="Copy with _columns">
<accelerator>
<KeyCodeCombination alt="UP" code="C" control="DOWN" meta="UP" shift="DOWN" shortcut="UP" />
</accelerator>
<graphic>
<Glyph fontFamily="FontAwesome" icon="copy" />
</graphic>
</MenuItem>
<SeparatorMenuItem mnemonicParsing="false" />
<MenuItem onAction="#selectAll" text="Select _All">
<accelerator>
<KeyCodeCombination alt="UP" code="A" control="DOWN" meta="UP" shift="UP" shortcut="UP" />
</accelerator>
</MenuItem>
<MenuItem mnemonicParsing="false" onAction="#unselectAll" text="Unselect All" />
</Menu>
答案 0 :(得分:0)
我不确定我的想法是否最好,但你应该像这样做: 您可以在资源中创建一个包,其中最常用的元素为按钮,表格,标签等,每个元素分配一个 fx:id ,并将其包含在另一个fxmls中。 例如:
PACKAGE :resource / package / name / utils / Label.fxml
<?import javafx.scene.control.Label?>
<?import javafx.geometry.Insets?>
<Label xmlns:fx="http://javafx.com/fxml"
fx:id="label"
style="-fx-background-color: red;
-fx-font: bold;
-fx-font-size: 30px;"
text="Hello world">
<padding>
<Insets top="5" left="5" right="5" bottom="5"/>
</padding>
</Label>
<!--Add all your nodes there-->
PACKAGE :resource / package / name / Main.fxml
<GridPane xmlns:fx="http://javafx.com/fxml" alignment="TOP_CENTER" hgap="10" vgap="10">
<fx:include source="Label.fxml"/> <!--There will be displayed all elements from Label.fxml-->
</GridPane>
在您的情况下,您只需为菜单项设置 fx:id ,然后导入另一个fxml。 祝你好运。