簡體   English   中英

JavaFX主fxml未加載fxml

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM