当前位置: 首页 > 知识库问答 >
问题:

JavaFX:即使在调整窗口大小时,也要将所有组件保持在中心位置

龚同
2023-03-14

我希望我的所有组件(文本字段、标签等)保持在固定大小的中心。我在scene builder中制作它,当我看到预览时它会工作,但是当我启动它时,当我调整它的大小时,组件不会停留在中心。

请看这里的图片:http://postimg.org/image/r42kvvfbf/

FXML文件:

<AnchorPane id="AnchorPane" fx:id="root" maxHeight="-1.0" maxWidth="-1.0" minHeight="400.0" minWidth="600.0" prefHeight="-1.0" prefWidth="-1.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="myController">
  <children>
    <GridPane alignment="CENTER" prefHeight="-1.0" prefWidth="-1.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
      <children>
        <VBox alignment="CENTER_LEFT" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="-1.0" prefWidth="-1.0" spacing="10.0" GridPane.columnIndex="0" GridPane.rowIndex="0">
          <children>
            <Label text="ID number" />
            <TextField fx:id="id" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="210.0" promptText="" />
            <Label text="Password" />
            <TextField fx:id="password" maxWidth="-Infinity" minWidth="-Infinity" prefWidth="210.0" promptText="" />
            <HBox id="HBox" alignment="CENTER" spacing="5.0">
              <children>
                <Button mnemonicParsing="false" onAction="#loginAction" text="Вход" textAlignment="CENTER" textOverrun="ELLIPSIS" />
              </children>
            </HBox>
          </children>
          <padding>
            <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
          </padding>
        </VBox>
      </children>
      <columnConstraints>
        <ColumnConstraints halignment="CENTER" hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
      </columnConstraints>
      <rowConstraints>
        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
      </rowConstraints>
    </GridPane>
  </children>
</AnchorPane>

我尝试过使用StackPane,也只使用VBox,但我无法实现我想要的。请帮帮忙!

共有1个答案

夹谷宜民
2023-03-14

问题解决了。也许这对其他人有帮助。

似乎我正在使用组作为我的场景的根。正如JavaFX留档中所说:“如果使用组作为根,场景图的内容将被场景的宽度和高度裁剪,场景大小的改变(如果用户调整舞台大小)不会改变场景的布局图形”。

链接:http://docs.oracle.com/javafx/2/api/javafx/scene/Scene.html

 类似资料:
  • 我正在尝试构建一个包含6个窗格(作为父级添加到GridPane布局中)的简单Java项目。我必须在开始时设置窗口大小,并通过参考根布局的宽度和高度,设法将它们均匀地拆分。 但我想要他们调整大小,因为我改变了窗口的大小(使用鼠标,现在他们得到固定的大小)。 下面是我的代码:

  • 我有下面的代码,它设置了一个特定大小的窗口。它还从外部URL加载图像。

  • 我试图在FXML中设计一个用户界面,并部分使用场景生成器。我使用Anchorpane来放置场景中的所有内容。但是,当我将窗口调整到更大的大小时,按钮会从中间向左移动。我想确保它们留在页面的中心。如何做到这一点?谢谢。

  • 我想让JFrame上的组件随着窗口的大小调整而调整大小。 这怎么能做到。 当前,当我使JFrame变小时,组件会保留在相同的位置,然后随着框架变小而消失。 理想情况下,我希望设置一个最小的JFrame大小,它不允许表单变小,但当我将其变大时,组件应该随JFrame移动。 补充:如果我想使用绝对布局管理器,该怎么办。这是我老板比较喜欢的布局经理。 代码: 公共类TestFrame扩展JFrame{p

  • 我使用的是最新版本的Java(FX)、macOS和IntelliJ IDEA CE的Mac电脑。问题是,当我调整JavaFX窗口的大小时,我的Mac会立即崩溃。只有当我按下电源按钮5秒钟后,MacBook才会重新启动。我创建了一个普通IntelliJ JavaFX项目,其中包含以下自动创建的文件: Hello控制器。java 我没有改变任何事情,开始了这个项目。一切正常,直到你尝试调整窗口大小,M

  • 问题内容: 我正在用d3.js绘制散点图。借助以下问题: 获取屏幕,当前网页和浏览器窗口的大小 我正在使用此答案: 这样我就可以将图适合用户的窗口,如下所示: 现在,我希望在用户调整窗口大小时可以调整图的大小。 PS:我的代码中没有使用jQuery。 问题答案: 寻找“响应式SVG”,使SVG响应式非常简单,您不必再担心大小。 这是我的做法: 注意: SVG图像中的所有内容都会随窗口宽度缩放。这包