[英]JavaFX main fxml not loading fxml
我的應用程序具有選項卡式窗格,因此為了使fxml文件易於管理,我有一個主要的fxml文件,其中包含這些選項卡,以及每個其他選項卡的單獨fxml。 一切正常,但由於某種原因,該應用程序已停止加載第二個選項卡。 我嘗試將其單獨加載到主應用中,效果很好。 我嘗試創建一個新的fxml文件作為測試並加載它,這也可以正常工作。 但是,它不會將其加載到第二個選項卡中。 同樣,沒有輸出到控制台。
編輯:經過更多試驗后,我將其范圍縮小到了拆分窗格。 我嘗試了一個帶有按鈕的非常簡單的fxml,這很好,但是添加了一個拆分窗格和兩個按鈕,並且視圖不呈現。
這是我的主要課程:公共課程主要擴展應用{
@Override
public void start(Stage primaryStage) {
Parent mainView;
try {
mainView = FXMLLoader.load(getClass().getResource("view/MainView.fxml"));
Scene scene = new Scene(mainView);
primaryStage.setTitle("Horse Show Manager");
primaryStage.setScene(scene);
primaryStage.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
這是我的mainview.fxml
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.GridPane?>
<TabPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0"
prefWidth="800.0" tabClosingPolicy="UNAVAILABLE" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
<tabs>
<Tab text="Classes">
<fx:include source="GroupPane.fxml" fx:id="groupPaneContent" />
</Tab>
<Tab text="Riders">
<fx:include source="RiderPane.fxml" fx:id="riderPaneContent" />
</Tab>
</tabs>
</TabPane>
這是第一個窗格
<?import javafx.collections.*?>
<?import javafx.geometry.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.collections.FXCollections?>
<SplitPane dividerPositions="0.4" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="application.view.GroupPaneController">
<items>
<TableView fx:id="table" editable="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0"
AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
<columns>
<TableColumn fx:id="groupNumberColumn" editable="false" prefWidth="40.0" text="Class Number" />
<TableColumn fx:id="groupNameColumn" editable="false" prefWidth="40.0" text="Class Name" />
</columns>
</TableView>
<GridPane alignment="CENTER">
<columnConstraints>
<ColumnConstraints hgrow="NEVER" />
<ColumnConstraints hgrow="ALWAYS" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="NEVER" />
<RowConstraints vgrow="NEVER" />
<RowConstraints vgrow="NEVER" />
<RowConstraints vgrow="NEVER" />
<RowConstraints vgrow="NEVER" />
<RowConstraints vgrow="NEVER" />
<RowConstraints vgrow="ALWAYS" />
</rowConstraints>
<children>
<Label text="Number">
<GridPane.margin>
<Insets bottom="10.0" left="5.0" right="5.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Extra Money" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="10.0" left="5.0" right="5.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Fee" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="10.0" left="5.0" right="5.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Gives Points" GridPane.rowIndex="5">
<GridPane.margin>
<Insets bottom="10.0" left="5.0" right="5.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Name" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="10.0" left="5.0" right="5.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Placing" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="5.0" right="5.0" top="10.0" />
</GridPane.margin>
</Label>
<HBox alignment="TOP_RIGHT" prefHeight="100.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="6">
<children>
<Button fx:id="addButton" mnemonicParsing="false" onAction="#groupAddOrEdit" text="Add">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
<Button fx:id="editButton" mnemonicParsing="false" onAction="#editing" text="Edit">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
<Button fx:id="deleteButton" mnemonicParsing="false" onAction= "#deleteGroup" text="Delete">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
</children>
</HBox>
<TextField fx:id="numberField" GridPane.columnIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="nameField" GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="feeField" GridPane.columnIndex="1" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField fx:id="extraMoneyField" GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<ChoiceBox fx:id="givesPointsChoiceBox" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1"
GridPane.hgrow="ALWAYS" GridPane.rowIndex="5">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="No" />
<String fx:value="Yes" />
</FXCollections>
</items>
<value>
<String fx:value="Yes" />
</value>
</ChoiceBox>
<ChoiceBox fx:id="gradingChoiceBox" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1"
GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
<items>
<FXCollections fx:factory="observableArrayList">
<String fx:value="Place" />
<String fx:value="Time" />
<String fx:value="Points" />
</FXCollections>
</items>
<value>
<String fx:value="Place" />
</value>
</ChoiceBox>
</children>
</GridPane>
</items>
</SplitPane>
第二個:
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<SplitPane dividerPositions="0.5" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<items>
<VBox>
<children>
<TableView VBox.vgrow="ALWAYS">
<columns>
<TableColumn prefWidth="75.0" text="C1" />
<TableColumn prefWidth="75.0" text="C2" />
</columns>
<VBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</VBox.margin>
</TableView>
<TableView VBox.vgrow="ALWAYS">
<columns>
<TableColumn prefWidth="75.0" text="C1" />
<TableColumn prefWidth="75.0" text="C2" />
</columns>
<VBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</VBox.margin>
</TableView>
</children>
</VBox>
<GridPane>
<columnConstraints>
<ColumnConstraints />
<ColumnConstraints hgrow="NEVER" minWidth="0.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="0.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="0.0" vgrow="NEVER" />
<RowConstraints minHeight="0.0" vgrow="NEVER" />
<RowConstraints minHeight="0.0" vgrow="NEVER" />
<RowConstraints minHeight="0.0" vgrow="NEVER" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="NEVER" />
<RowConstraints minHeight="0.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="0.0" vgrow="NEVER" />
<RowConstraints minHeight="0.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="0.0" vgrow="NEVER" />
</rowConstraints>
<children>
<Label text="Number" GridPane.columnIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</Label>
<Label text="Name" GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</Label>
<Label text="Fee" GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</Label>
<Label text="Membership" GridPane.columnIndex="1" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</Label>
<TextField GridPane.columnIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
<VBox GridPane.columnIndex="2" GridPane.rowIndex="3">
<children>
<RadioButton mnemonicParsing="false" text="Current Member">
<VBox.margin>
<Insets left="5.0" right="5.0" top="5.0" />
</VBox.margin>
<toggleGroup>
<ToggleGroup fx:id="membershipGroup" />
</toggleGroup>
</RadioButton>
<RadioButton mnemonicParsing="false" text="Single Membership" toggleGroup="$membershipGroup">
<VBox.margin>
<Insets left="5.0" right="5.0" top="5.0" />
</VBox.margin>
</RadioButton>
<RadioButton mnemonicParsing="false" text="Family Membership" toggleGroup="$membershipGroup">
<VBox.margin>
<Insets left="5.0" right="5.0" top="5.0" />
</VBox.margin>
</RadioButton>
<RadioButton mnemonicParsing="false" text="Non-member" toggleGroup="$membershipGroup">
<VBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</VBox.margin>
</RadioButton>
</children>
</VBox>
<TableView prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.columnSpan="2147483647" GridPane.rowIndex="5">
<columns>
<TableColumn editable="false" maxWidth="1.7976931348623157E308" minWidth="-Infinity" prefWidth="187.0" text="Horses" />
</columns>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TableView>
<TableView prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.columnSpan="2147483647" GridPane.rowIndex="7">
<columns>
<TableColumn prefWidth="75.0" text="Class Number" />
<TableColumn prefWidth="75.0" text="Class Name" />
</columns>
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TableView>
<HBox GridPane.columnIndex="1" GridPane.columnSpan="2147483647" GridPane.rowIndex="6">
<children>
<TextField HBox.hgrow="ALWAYS">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</TextField>
<Button mnemonicParsing="false" text="Button">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
</children>
</HBox>
<HBox alignment="CENTER" GridPane.columnIndex="1" GridPane.columnSpan="2147483647" GridPane.rowIndex="8" GridPane.valignment="CENTER">
<children>
<Button alignment="CENTER" mnemonicParsing="false" text="Button" HBox.hgrow="ALWAYS">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
<Button alignment="CENTER" mnemonicParsing="false" text="Button" HBox.hgrow="ALWAYS">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
</children>
</HBox>
<HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.columnSpan="2147483647" GridPane.rowIndex="4">
<children>
<TextField HBox.hgrow="ALWAYS">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</TextField>
<Button mnemonicParsing="false" text="Add Horse">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
</Button>
</children>
</HBox>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</GridPane.margin>
</TextField>
</children>
</GridPane>
</items>
</SplitPane>
抱歉,代碼太長,在此先感謝您的幫助!
我認為回答我自己的問題可能是錯誤的形式...但是解決方案是使用fx:define和fx:include標記定義兩個選項卡。 然后可以加載fxml內容。 下面的例子。
<TabPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0"
prefWidth="800.0" tabClosingPolicy="UNAVAILABLE" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<fx:define>
<fx:include fx:id="groupPaneContent" source="GroupPane.fxml" />
<fx:include fx:id="riderPaneContent" source="RiderPane.fxml" />
</fx:define>
<tabs>
<Tab closable="false" text="Classes" content="$groupPaneContent" />
<Tab closable="false" text="Riders" content="$riderPaneContent" />
</tabs>
</TabPane>
編輯: FXML最初不能正確呈現。 我必須手動調整應用程序的大小,使其顯示出來。 如果您知道如何解決此問題,請發表評論
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.