JavaFX将元素缩放到屏幕分辨率

JavaFX将元素缩放到屏幕分辨率,java,user-interface,javafx,scenebuilder,Java,User Interface,Javafx,Scenebuilder,我已经使用SceneBuilder在JavaFX中创建了一个GUI,它可以在窗口模式下完美工作。看起来是这样的, 我想做的是最大限度地运行程序(不是全屏),理想情况下,根据舞台是否最大化,调整元素大小。这就是程序最大化时GUI的样子 正如您所看到的,由于某种奇怪的原因,表确实“缩放”,而其他元素却没有。在SceneBuilder中是否有可以使元素流动的设置 显示页面的FXML代码 <?xml version="1.0" encoding="UTF-8"?> <?impor

我已经使用SceneBuilder在JavaFX中创建了一个GUI,它可以在窗口模式下完美工作。看起来是这样的,

我想做的是最大限度地运行程序(不是全屏),理想情况下,根据舞台是否最大化,调整元素大小。这就是程序最大化时GUI的样子

正如您所看到的,由于某种奇怪的原因,表确实“缩放”,而其他元素却没有。在SceneBuilder中是否有可以使元素流动的设置

显示页面的FXML代码

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

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

<AnchorPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" onKeyPressed="#handleRefresh" prefHeight="634.0" prefWidth="602.0" stylesheets="@Style.css" xmlns="http://javafx.com/javafx/8.0.40" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <TableView fx:id="tView" layoutX="20.0" layoutY="159.0" onKeyPressed="#handleRefresh" prefHeight="389.0" prefWidth="601.0" AnchorPane.bottomAnchor="86.0" AnchorPane.leftAnchor="20.0" AnchorPane.rightAnchor="31.0" AnchorPane.topAnchor="159.0">
        <columns>
          <TableColumn fx:id="caseNumCol" prefWidth="75.0" text="CaseNO" />
          <TableColumn fx:id="caseNotesCol" prefWidth="75.0" text="Case Notes" />
            <TableColumn fx:id="dateCreatedCol" prefWidth="75.0" text="Date Created" />
            <TableColumn fx:id="deadlineDateCol" prefWidth="75.0" text="Deadline" />
            <TableColumn fx:id="priorityCol" prefWidth="75.0" text="Priority" />
            <TableColumn fx:id="completedCol" prefWidth="75.0" text="Completed" />
        </columns>
         <columnResizePolicy>
            <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
         </columnResizePolicy>
      </TableView>
      <Button layoutX="66.0" layoutY="559.0" mnemonicParsing="false" onAction="#handleAddButtonAction" prefHeight="25.0" prefWidth="79.0" text="Add Job" />
      <Button layoutX="322.0" layoutY="559.0" mnemonicParsing="false" onAction="#handleDeleteButtonAction" prefHeight="25.0" prefWidth="79.0" text="Delete Job" />
      <Label layoutX="14.0" layoutY="6.0" prefHeight="58.0" prefWidth="245.0" text="SDC Job Manager">
         <font>
            <Font name="System Bold" size="28.0" />
         </font>
      </Label>
      <Line endX="500" layoutX="101.0" layoutY="72.0" startX="-100.0" />
      <Label fx:id="adamLabel" alignment="CENTER" layoutX="153.0" layoutY="98.0" prefHeight="30.0" prefWidth="295.0" text="Adam's Jobs" visible="false">
         <font>
            <Font size="24.0" />
         </font>
      </Label>
      <Label fx:id="kitLabel" alignment="CENTER" layoutX="153.0" layoutY="98.0" prefHeight="30.0" prefWidth="295.0" text="Kit's Jobs" visible="false">
         <font>
            <Font size="24.0" />
         </font>
      </Label>
      <Label fx:id="userLabel" layoutX="428.0" layoutY="24.0" prefHeight="20.0" prefWidth="162.0">
         <font>
            <Font name="System Bold" size="14.0" />
         </font>
      </Label>
      <Button layoutX="197.0" layoutY="559.0" mnemonicParsing="false" onAction="#handleUpdateButtonAction" prefHeight="25.0" prefWidth="79.0" text="Update Job" />
      <Label layoutX="20.0" layoutY="90.0" prefHeight="17.0" prefWidth="107.0" text="Press F5 To Refresh" />
      <Button layoutX="447.0" layoutY="559.0" mnemonicParsing="false" onAction="#handleBackButtonAction" prefHeight="25.0" prefWidth="79.0" text="Back" AnchorPane.bottomAnchor="50.0" AnchorPane.leftAnchor="447.0" AnchorPane.rightAnchor="76.0" AnchorPane.topAnchor="559.0" />
   </children>
</AnchorPane>


编辑:我使用AnchorPane作为布局,为清晰起见添加了FXML代码。

您是否使用任何布局、容器?或者你只是把控件放在画布上?检查此网站:@dreamsComeTrue抱歉,我应该补充一点,我使用的是一种锚烷。好的,所以你需要做的是将容器嵌套在容器中-单锚烷是不够的。例如,尝试在HBox中放置一行按钮,然后将此框嵌套在AnchorPane中,以此类推。对于窗口的顶部,我建议也使用AnchorPane,将标签放在其中,并将此AnchorPane包含在父AnchorPane中。您可以通过右键单击标题栏来尝试使用缩放功能吗?我建议阅读,其中详细描述了每个布局窗格。我不知道你为什么在描述你观察到的行为时说“出于某种奇怪的原因”。您明确地对按钮和标签的布局坐标进行硬编码,并且不提供任何其他约束:除了始终以相同的坐标显示,无论屏幕大小,您还希望它们做什么?您是否使用任何布局、容器?或者你只是把控件放在画布上?检查此网站:@dreamsComeTrue抱歉,我应该补充一点,我使用的是一种锚烷。好的,所以你需要做的是将容器嵌套在容器中-单锚烷是不够的。例如,尝试在HBox中放置一行按钮,然后将此框嵌套在AnchorPane中,以此类推。对于窗口的顶部,我建议也使用AnchorPane,将标签放在其中,并将此AnchorPane包含在父AnchorPane中。您可以通过右键单击标题栏来尝试使用缩放功能吗?我建议阅读,其中详细描述了每个布局窗格。我不知道你为什么在描述你观察到的行为时说“出于某种奇怪的原因”。您明确地对按钮和标签的布局坐标进行硬编码,并且不提供任何其他约束:除了始终以相同的坐标显示,无论屏幕大小,您还希望它们做什么?