Has*_*haf 6 java javafx javafx-2 fxml
特别描述性和内容丰富的答案将获得价值50美元的声誉.
我正在使用JavaFX开发应用程序,对于视图,我使用FXML.
<AnchorPane id="AnchorPane" fx:id="dashboard" prefHeight="400.0" prefWidth="600.0" stylesheets="@css/dashboard.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.hassanalthaf.telemart.viewmodels.DashboardViewModel">
<children>
<MenuBar maxWidth="600.0" minWidth="600.0" prefWidth="600.0">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
<AnchorPane fx:id="home" layoutY="29.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="371.0" prefWidth="600.0" />
<AnchorPane fx:id="about" layoutY="29.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="371.0" prefWidth="600.0" />
<AnchorPane fx:id="users" layoutY="29.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="371.0" prefWidth="600.0" />
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这个段包含一些<AnchorPane>s的的ID home,about,users.这些是我的申请的单独页面.要操纵那些窗格,我必须将它们注入到我的代码中,如下所示:
@FXML
private AnchorPane home;
@FXML
private AnchorPane about;
@FXML
private AnchorPane users;
Run Code Online (Sandbox Code Playgroud)
这可能看起来整洁,但是当有超过20页时,它可能看起来有点混乱和乏味.有没有办法以干净有效的方式将它们分组成阵列或其他东西?
fab*_*ian 13
您可以使用fx:define和fx:reference将元素放置List在场景图中和场景图中,并将列表注入控制器:
<AnchorPane id="AnchorPane" fx:id="dashboard" prefHeight="400.0" prefWidth="600.0" stylesheets="@css/dashboard.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.hassanalthaf.telemart.viewmodels.DashboardViewModel">
<fx:define>
<!-- create panes and store them in a list -->
<ArrayList fx:id="panes">
<AnchorPane fx:id="home" layoutY="29.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="371.0" prefWidth="600.0" />
<AnchorPane fx:id="about" layoutY="29.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="371.0" prefWidth="600.0" />
<AnchorPane fx:id="users" layoutY="29.0" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="371.0" prefWidth="600.0" />
</ArrayList>
</fx:define>
<children>
<MenuBar maxWidth="600.0" minWidth="600.0" prefWidth="600.0">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
<!-- add panes in the list to scene graph -->
<fx:reference source="home"/>
<fx:reference source="about"/>
<fx:reference source="users"/>
</children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)
@FXML
private List<AnchorPane> panes;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1315 次 |
| 最近记录: |