Javafx 如何在borderpane中将fxml文件加载到完整大小

Javafx 如何在borderpane中将fxml文件加载到完整大小,javafx,Javafx,我的目标是获得用户监视器的大小并相应地显示FXML文件。 但是,窗口似乎适合大小,但FXML文件不适合。 如何将文件放入边框窗格 此外,我希望它可以自动调整大小,当我改变屏幕大小 我通过参考下面的YouTube窗口控件来编写代码。 主类 } test.fxml 文件位于中间,但不是屏幕大小。 代码中有两件事要指出: 您正在创建一个新的边框窗格,然后在加载FXML时覆盖它。无需调用BorderPane mainPane=newborderpane() 加载FXML的BorderPane后,出

我的目标是获得用户监视器的大小并相应地显示FXML文件。 但是,窗口似乎适合大小,但FXML文件不适合。 如何将文件放入边框窗格

此外,我希望它可以自动调整大小,当我改变屏幕大小

我通过参考下面的YouTube窗口控件来编写代码。

主类 }

test.fxml


文件位于中间,但不是屏幕大小。

代码中有两件事要指出:

  • 您正在创建一个新的
    边框窗格
    ,然后在加载FXML时覆盖它。无需调用
    BorderPane mainPane=newborderpane()
  • 加载FXML的
    BorderPane
    后,出于某种原因,您将其放入
    StackPane
    中,但千万不要配置
    StackPane
    的子级布局
  • 没有理由像这样确定屏幕分辨率/大小。您可以调用
    primaryStage.setMaximized(true)
    primaryStage.setFullscreen(true)
    ,具体取决于您是否希望阶段边框可见
  • 考虑我简化了一点的以下代码片段:

    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class Main extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            try {
                // Create the loader and pass our text.fxml reference to it
                FXMLLoader loader = new FXMLLoader(getClass().getResource("test.fxml"));
    
                // If you do not specify a controller in the FXML itself, you can do so here
                loader.setController(new Controller());
    
                // Set our Stage's scene and load the FXML at the same time
                primaryStage.setScene(new Scene(loader.load()));
    
                // Maximize the stage (or set to fullscreen
                primaryStage.setMaximized(true);
    //            primaryStage.setFullScreen(true);
    
                primaryStage.show();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    
    结果:


    旁注:与其尝试确定屏幕分辨率,为什么不将
    阶段设置为全屏?此外,您的代码也不会编译。请阅读如何创建并更新您的问题。不确定为什么要对
    mainPane
    字段的初始值进行绑定,而不以任何其他方式使用它;您只需将其替换为加载fxml的结果。但是,如果您想要一个响应性布局,您不应该将
    边框窗格
    的最小/最大大小设置为
    使用_PREF_size
    :这只会导致
    边框窗格
    的一个可能大小:设置为硬编码值的首选大小。。。只需删除所有这些大小限制。你不需要它们,如果你是根据屏幕大小来选择大小的话…@Zephyr当我在谷歌搜索时,没有办法设置屏幕,我也从来没有使用过javafx。这是我的经验不足。@fabian哦,我明白了。谢谢你的善意和明确的评论。如何将fxml放入setMaximized屏幕?哦,我将锚定窗格更改为网格窗格,效果很好!!谢谢你的指导。
        <BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="922.0" prefWidth="1314.0" style="-fx-background-color: white;" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1">
       <top>
          <VBox BorderPane.alignment="CENTER">
             <children>
                <MenuBar prefHeight="18.0" prefWidth="1078.0" style="-fx-background-color: #f0efef;">
                  <menus>
                    <Menu mnemonicParsing="false" text="File">
                      <items>
                        <MenuItem mnemonicParsing="false" text="Close" />
                      </items>
                    </Menu>
                    <Menu mnemonicParsing="false" text="Edit">
                      <items>
                        <MenuItem mnemonicParsing="false" text="Delete" />
                      </items>
                    </Menu>
                    <Menu mnemonicParsing="false" text="Help">
                      <items>
                        <MenuItem mnemonicParsing="false" text="About" />
                      </items>
                    </Menu>
                  </menus>
                </MenuBar>
                <ToolBar prefHeight="43.0" prefWidth="1078.0" style="-fx-background-color: #b0aacd;">
                   <items>
                      <Label prefHeight="26.0" prefWidth="72.0" text="&gt;&gt;&gt;">
                         <font>
                            <Font size="18.0" />
                         </font>
                      </Label>
                      <TextField fx:id="ip" prefHeight="29.0" prefWidth="198.0" />
                      <Button fx:id="start" mnemonicParsing="false" onAction="#onIp" prefHeight="29.0" prefWidth="88.0" style="-fx-background-color: #ddeedd;" text="start" />
                   </items>
                </ToolBar>
             </children>
          </VBox>
       </top>
       <center>
          <VBox BorderPane.alignment="CENTER">
             <children>
                <AnchorPane prefHeight="221.0" prefWidth="1078.0">
                   <children>
                      <Label layoutX="14.0" layoutY="11.0" prefHeight="34.0" prefWidth="210.0" text="Chapter1">
                         <font>
                            <Font name="Expo M" size="25.0" />
                         </font>
                      </Label>
                      <Separator layoutX="9.0" layoutY="46.0" prefHeight="3.0" prefWidth="1221.0" />
                      <Label layoutX="620.0" layoutY="57.0" text="age" AnchorPane.leftAnchor="620.0">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <Label layoutX="291.0" layoutY="57.0" text="name" AnchorPane.leftAnchor="291.0">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <Label layoutX="301.0" layoutY="99.0" text="choice" AnchorPane.leftAnchor="301.0">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="age" layoutX="677.0" layoutY="57.0" prefHeight="29.0" prefWidth="126.0" />
                      <ChoiceBox layoutX="416.0" layoutY="99.0" prefHeight="26.0" prefWidth="51.0" />
                      <Button fx:id="submit" layoutX="1120.0" layoutY="141.0" mnemonicParsing="false" style="-fx-background-color: #b0aacd;" text="submit">
                         <font>
                            <Font name="Ebrima Bold" size="15.0" />
                         </font>
                      </Button>
                      <TextField fx:id="name" layoutX="341.0" layoutY="57.0" prefHeight="29.0" prefWidth="126.0" />
                      <CheckBox fx:id="male" layoutX="615.0" layoutY="99.0" mnemonicParsing="false" text="male">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </CheckBox>
                      <CheckBox fx:id="female" layoutX="712.0" layoutY="99.0" mnemonicParsing="false" text="female">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </CheckBox>
                   </children>
                </AnchorPane>
                <AnchorPane prefHeight="227.0" prefWidth="1078.0">
                   <children>
                      <Label layoutX="14.0" layoutY="16.0" prefHeight="32.0" prefWidth="179.0" text="Chapter2">
                         <font>
                            <Font name="Expo M" size="25.0" />
                         </font>
                      </Label>
                      <Separator layoutX="14.0" layoutY="48.0" prefHeight="7.0" prefWidth="1225.0" />
                      <Label layoutX="176.0" layoutY="67.0" text="aaa">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text1" editable="false" layoutX="285.0" layoutY="66.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="450.0" layoutY="67.0" text="ddd">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text2" editable="false" layoutX="598.0" layoutY="66.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="767.0" layoutY="67.0" text="ggg">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text3" editable="false" layoutX="900.0" layoutY="66.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="746.0" layoutY="155.0" text="Result">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text8" editable="false" layoutX="900.0" layoutY="155.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="174.0" layoutY="110.0" text="bbb">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text4" editable="false" layoutX="285.0" layoutY="110.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="458.0" layoutY="110.0" text="eee">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text5" editable="false" layoutX="598.0" layoutY="110.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="178.0" layoutY="155.0" text="ccc">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="text6" editable="false" layoutX="285.0" layoutY="155.0" prefHeight="26.0" prefWidth="110.0" />
                      <Label layoutX="458.0" layoutY="155.0" text="fff">
                         <font>
                            <Font name="Ebrima" size="19.0" />
                         </font>
                      </Label>
                      <TextField fx:id="texxt7" editable="false" layoutX="598.0" layoutY="155.0" prefHeight="26.0" prefWidth="110.0" />
                      <Button fx:id="submit1" layoutX="1127.0" layoutY="170.0" mnemonicParsing="false" style="-fx-background-color: #b0aacd;" text="submit">
                         <font>
                            <Font name="Ebrima Bold" size="15.0" />
                         </font>
                      </Button>
                   </children>
                </AnchorPane>
                <AnchorPane prefHeight="444.0" prefWidth="1078.0">
                   <children>
                      <Label layoutX="491.0" layoutY="9.0" text="List" textAlignment="CENTER">
                         <font>
                            <Font name="Expo M" size="25.0" />
                         </font>
                      </Label>
                      <Separator layoutX="7.0" layoutY="40.0" prefHeight="14.0" prefWidth="1225.0" />
                      <TableView fx:id="List" layoutX="11.0" layoutY="56.0" maxHeight="-Infinity" prefHeight="380.0" prefWidth="1288.0">
                        <columns>
                          <TableColumn fx:id="No" prefWidth="34.0" style="-fx-background-color: white;" />
                            <TableColumn fx:id="a" prefWidth="83.0" style="-fx-background-color: white;" text="a" />
                            <TableColumn fx:id="b" prefWidth="256.0" style="-fx-background-color: white;" text="b" />
                            <TableColumn fx:id="c" prefWidth="90.0" style="-fx-background-color: white;" text="c" />
                            <TableColumn fx:id="d" prefWidth="89.0" style="-fx-background-color: white;" text="d" />
                            <TableColumn fx:id="e" prefWidth="135.0" style="-fx-background-color: white;" text="e" />
                            <TableColumn fx:id="f" prefWidth="87.0" style="-fx-background-color: white;" text="f" />
                            <TableColumn fx:id="g" prefWidth="75.0" text="g" />
                            <TableColumn fx:id="h" prefWidth="75.0" style="-fx-background-color: white;" text="h" />
                            <TableColumn fx:id="i" prefWidth="149.0" style="-fx-background-color: white;" text="i" />
                            <TableColumn fx:id="j" prefWidth="135.0" style="-fx-background-color: white;" text="j" />
                            <TableColumn fx:id="k" prefWidth="75.0" style="-fx-background-color: white;" text="k" />
                        </columns>
                      </TableView>
                   </children>
                </AnchorPane>
             </children>
          </VBox>
       </center>
    </BorderPane>
    
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    
    public class Main extends Application {
    
        @Override
        public void start(Stage primaryStage) {
            try {
                // Create the loader and pass our text.fxml reference to it
                FXMLLoader loader = new FXMLLoader(getClass().getResource("test.fxml"));
    
                // If you do not specify a controller in the FXML itself, you can do so here
                loader.setController(new Controller());
    
                // Set our Stage's scene and load the FXML at the same time
                primaryStage.setScene(new Scene(loader.load()));
    
                // Maximize the stage (or set to fullscreen
                primaryStage.setMaximized(true);
    //            primaryStage.setFullScreen(true);
    
                primaryStage.show();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }