JavaFX:第一次尝试时显示空窗口

JavaFX:第一次尝试时显示空窗口,javafx,fxml,fxmlloader,Javafx,Fxml,Fxmlloader,前言:新手进入Javafxml 我的应用程序运行良好。我只有一个问题,我知道应该有一个非常简单的解决方案,但我想不出更多 当我运行我的应用程序时,我得到一个空窗口。 我必须调整窗口的大小以获得所需的 FXML代码: <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.layout.*?> <?import java.lang.*?> <?import javafx.scene.c

前言:新手进入Javafxml 我的应用程序运行良好。我只有一个问题,我知道应该有一个非常简单的解决方案,但我想不出更多

当我运行我的应用程序时,我得到一个空窗口。

我必须调整窗口的大小以获得所需的

FXML代码:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>

<TitledPane collapsible="false" maxHeight="-Infinity" maxWidth="-Infinity"        minHeight="-Infinity" minWidth="-Infinity" prefHeight="800.0" prefWidth="1200.0" text="Invoice" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controllers.InvoiceController">
  <content>
     <AnchorPane prefHeight="200.0" prefWidth="200.0">
        <children>
          <SplitPane dividerPositions="0.08355795148247978" layoutX="166.0" layoutY="108.0" orientation="VERTICAL" prefHeight="374.0" prefWidth="598.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <items>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" styleClass="body-default" stylesheets="@main.css" SplitPane.resizableWithParent="false">
                 <children>
                    <Button fx:id="back" layoutX="20.0" layoutY="14.0" mnemonicParsing="false" onAction="#BackButton" prefHeight="37.0" prefWidth="79.0" styleClass="btn-default" stylesheets="@main.css" text="Back" AnchorPane.leftAnchor="20.0" AnchorPane.topAnchor="14.0" />
                 </children>
              </AnchorPane>
            <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0">
                 <children>
                    <SplitPane dividerPositions="0.7078260869565217" layoutX="158.0" layoutY="29.0" prefHeight="283.0" prefWidth="577.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                      <items>
                        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
                             <children>
                                <TableView fx:id="invoicelisttb1" layoutX="71.0" layoutY="14.0" prefHeight="281.0" prefWidth="404.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
                                  <columns>
                                    <TableColumn fx:id="order" prefWidth="148.0" text="Order No." />
                                    <TableColumn fx:id="name" prefWidth="167.0" text="Name" />
                                      <TableColumn fx:id="price" prefWidth="173.0" text="Price" />
                                  </columns>
                                </TableView>
                             </children>
                          </AnchorPane>
                        <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" SplitPane.resizableWithParent="false">
                             <children>
                                <Label layoutX="14.0" layoutY="44.0" prefHeight="31.0" prefWidth="91.0" styleClass="bold" stylesheets="@main.css" text="Order No:" AnchorPane.rightAnchor="233.0" />
                                <TextField fx:id="txtorder" editable="false" layoutX="197.0" layoutY="44.0" prefHeight="25.0" prefWidth="83.0" AnchorPane.rightAnchor="58.0" />
                                <Label layoutX="14.0" layoutY="91.0" prefHeight="31.0" prefWidth="77.0" styleClass="bold" stylesheets="@main.css" text="Price:" AnchorPane.rightAnchor="246.0" />
                                <TextField fx:id="txtprice" layoutX="197.0" layoutY="91.0" prefHeight="25.0" prefWidth="83.0" AnchorPane.rightAnchor="58.0" />
                                <Button fx:id="btnprice" layoutX="196.0" layoutY="160.0" mnemonicParsing="false" onAction="#enterPrice" prefHeight="31.0" prefWidth="113.0" styleClass="btn-default" stylesheets="@main.css" text="Enter Price" AnchorPane.rightAnchor="58.0" />
                             </children>
                          </AnchorPane>
                      </items>
                    </SplitPane>
                 </children>
              </AnchorPane>
          </items>
        </SplitPane>
     </children>
  </AnchorPane>
  </content>
  </TitledPane>

尝试以下操作:

try {
   Parent planner = FXMLLoader.load(getClass().getResource("/view/Invoice2.fxml"));

   stage.setTitle("Order Details");
   stage.setScene(new Scene(planner));
} catch (IOException e) {
   e.printStackTrace();
}
我使用的不是
stage.getScene().setRoot(规划器)
stage.setScene(新场景(规划器))

请尝试以下操作:

try {
   Parent planner = FXMLLoader.load(getClass().getResource("/view/Invoice2.fxml"));

   stage.setTitle("Order Details");
   stage.setScene(new Scene(planner));
} catch (IOException e) {
   e.printStackTrace();
}

我使用的不是
stage.getScene().setRoot(规划器)
stage.setScene(新场景(规划器))而不是
loader.setLocation(getClass().getResource(“/view/Invoice2.fxml”)将资源更改为
。/view/Invoice2.fxml“
。如果您的项目目录结构如下所示,则此功能将起作用:

project
|
\_ view
|  |
|  \_ Invoice2.fxml
\_ main
   \_ Main.java

“./path”
表示所选路径位于同一父目录中,而不是当前目录中。

而不是
loader.setLocation(getClass().getResource(“/view/Invoice2.fxml”)将资源更改为
。/view/Invoice2.fxml“
。如果您的项目目录结构如下所示,则此功能将起作用:

project
|
\_ view
|  |
|  \_ Invoice2.fxml
\_ main
   \_ Main.java


“./path”
表示所选路径位于同一父目录中,而不是当前目录中。

经过几天的研究,我最终解决了这个问题,只需将整个fxml结构放在另一个锚窗格中即可。我不知道为什么会解决这个问题,也不知道它是如何解决的,但当我将整个GUI包装到锚窗格中时,它开始正常工作

经过几天的研究,我最终解决了这个问题,只需将整个fxml结构放到另一个锚窗格中即可。我不知道为什么会解决这个问题,也不知道它是如何解决的,但当我将整个GUI包装到锚窗格中时,它开始正常工作

请查看我编辑的问题您的主要类是否也位于
查看
文件夹中?您发布的代码没有问题:原因可能是代码中的其他地方。这是任何人都无法帮助的,除非你包含一个。不,它位于另一个包@MaslorSee my edited version中,这次我也加入了fxml文件@James_dp请看我编辑的问题您的主类是否也位于
视图
文件夹中?您发布的代码没有问题:原因可能是代码中的其他地方。这对任何人来说都是不可能的,除非你包含一个。不,它位于另一个包@MaslorSee my edited version,我这次也包含了fxml文件@James_dthank,谢谢你这么快的回复。我已经试过这个了。此代码适用于所有其他窗口,只是在这个特定窗口中存在问题,您的窗口的初始大小是多少?您是否有
Pref-Width
Pref-Height
?还要检查IDE中的fxml文件(不在场景生成器中)。有时可能会有错误。是的,我设置了这两个属性。当我用IDE打开它时,它工作正常。只是当我运行应用程序时,这个窗口看起来完全是空的,当我调整它的大小时,它工作正常。嗯,有点奇怪。你能用一个包含相应窗口的程序摘录来编辑你的问题吗?谢谢你这么快的回答。我已经试过这个了。此代码适用于所有其他窗口,只是在这个特定窗口中存在问题,您的窗口的初始大小是多少?您是否有
Pref-Width
Pref-Height
?还要检查IDE中的fxml文件(不在场景生成器中)。有时可能会有错误。是的,我设置了这两个属性。当我用IDE打开它时,它工作正常。只是当我运行应用程序时,这个窗口看起来完全是空的,当我调整它的大小时,它工作正常。嗯,有点奇怪。你能用包含一致窗口的程序的最小摘录编辑你的问题吗?听起来很简单,我也遇到了同样的问题,这为我解决了问题。亲爱的,表决吧。虽然听起来很简单,但我也遇到了同样的问题,这为我解决了。亲爱的,投票吧。