Java 如何在将FXML加载到AnchorPane时自动调整大小?

Java 如何在将FXML加载到AnchorPane时自动调整大小?,java,javafx,fxml,Java,Javafx,Fxml,我在加载到AnchorPane中的FXML布局方面遇到问题 我有一个Scene.fxml,上面有一个锚烷和一个按钮。按下按钮将Internal.fxml加载到AnchorPane中。Internal.fxml有一个文本字段,其中AnchorPane约束设置为left和right。就这样 虽然现在调整窗口大小时,文本字段不会调整大小 为什么文本字段本身不调整大小?下面代码中的错误在哪里 Main.java: @Override public final void start(final Stage

我在加载到AnchorPane中的FXML布局方面遇到问题

我有一个Scene.fxml,上面有一个锚烷和一个按钮。按下按钮将Internal.fxml加载到AnchorPane中。Internal.fxml有一个文本字段,其中AnchorPane约束设置为left和right。就这样

虽然现在调整窗口大小时,文本字段不会调整大小

为什么文本字段本身不调整大小?下面代码中的错误在哪里

Main.java:

@Override
public final void start(final Stage firstStage) throws Exception {
    Parent mask = FXMLLoader.load(getClass()
                            .getResource("/fxml/Scene.fxml"));

    Scene scene = new Scene(mask);
    scene.getStylesheets().add("/styles/Styles.css");

    firstStage.setTitle("MyProgram");
    firstStage.setScene(scene);
    firstStage.show();

    Main.stage = firstStage;
}
Scene.fxml:

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

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

<AnchorPane id="AnchorPane" fx:id="content" prefHeight="600.0" prefWidth="800.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="com.treasury.myprogram.controller.SceneController">
  <children>
    <Button layoutX="257.0" layoutY="227.0" mnemonicParsing="false" onAction="#loadInternal" text="Button" />
  </children>
</AnchorPane>
编辑:

好的,首先非常感谢,现在代码可以工作了。好吧,有一半是这样,但至少第一期已经没有了。我现在有一个只能工作一半的FXML。它有一个网格窗格,其中有几个条目,下面有一个文本字段。它们都直接在锚烷上。现在,当我在JavaFX Scene Builder 1.1中处于构造模式时,一切看起来都很好,但是当我将这个Internal.fxml加载到Scene.fxml中时,只有文本字段适应父级大小,而GridPane不适应。我很难找到原因。 有什么问题吗?错误配置在哪里

Internal.fxml:

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

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

<AnchorPane id="AnchorPane" 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="com.treasury.myprogram.controller.InternalController">
  <children>
    <TextField layoutY="14.0" prefWidth="-1.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" />
  </children>
</AnchorPane>
<?xml version="1.0" encoding="UTF-8"?>

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

<AnchorPane id="AnchorPane" 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="com.treasury.myprogram.controller.InternalController">
  <children>
    <GridPane gridLinesVisible="true" prefHeight="-1.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="5.0">
      <children>
        <Label text="Program name:" GridPane.columnIndex="0" GridPane.rowIndex="0" />
        <Label text="Version:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
        <Label text="Release date:" GridPane.columnIndex="0" GridPane.rowIndex="2" />
        <Label text="myprogram" GridPane.columnIndex="1" GridPane.rowIndex="0" />
        <Label text="1.0" GridPane.columnIndex="1" GridPane.rowIndex="1" />
        <Label text="28.02.2014" GridPane.columnIndex="1" GridPane.rowIndex="2" />
        <TextField prefWidth="200.0" GridPane.columnIndex="0" GridPane.rowIndex="3" />
        <TextField prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
      </children>
      <columnConstraints>
        <ColumnConstraints hgrow="SOMETIMES" maxWidth="294.0" minWidth="10.0" prefWidth="112.0" />
        <ColumnConstraints hgrow="SOMETIMES" maxWidth="502.0" minWidth="10.0" prefWidth="478.0" />
      </columnConstraints>
      <rowConstraints>
        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
      </rowConstraints>
    </GridPane>
    <TextField layoutY="125.0" prefWidth="590.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" />
  </children>
</AnchorPane>

尝试使用边界窗格而不是锚定窗格,并将子fxml的对象设置为中心。 还要检查父fxml是否可以在场景生成器中自动调整大小

@FXML private BorderPane bPaneHomeChild;
FXMLLoader loader = new FXMLLoader(getClass.getResource("/fxml/Internal.fxml"));
Pane cmdPane = (Pane) loader.load();
bPaneHomeChild.setCenter(cmdPane);

尝试使用边界窗格而不是锚定窗格,并将子fxml的对象设置为中心。 还要检查父fxml是否可以在场景生成器中自动调整大小

@FXML private BorderPane bPaneHomeChild;
FXMLLoader loader = new FXMLLoader(getClass.getResource("/fxml/Internal.fxml"));
Pane cmdPane = (Pane) loader.load();
bPaneHomeChild.setCenter(cmdPane);
试着这样做:

AnchorPane.setTopAnchor(<child node>,0.0);
AnchorPane.setBottomAnchor(<child node>,0.0);
AnchorPane.setLeftAnchor(<child node>,0.0);
AnchorPane.setRightAnchor(<child node>,0.0);
AnchorPane.setTopAnchor(,0.0);
锚烷后坐锚(,0.0);
AnchorPane.setLeftAnchor(,0.0);
AnchorPane.setRightAnchor(,0.0);
试着这样做:

AnchorPane.setTopAnchor(<child node>,0.0);
AnchorPane.setBottomAnchor(<child node>,0.0);
AnchorPane.setLeftAnchor(<child node>,0.0);
AnchorPane.setRightAnchor(<child node>,0.0);
AnchorPane.setTopAnchor(,0.0);
锚烷后坐锚(,0.0);
AnchorPane.setLeftAnchor(,0.0);
AnchorPane.setRightAnchor(,0.0);

选择GridPane左侧,然后单击其周围的阴影区域。然后在右侧的“布局”面板上选择Vgrow和Hgrow以“始终”。 这样地:

选择GridPane左侧,然后单击其周围的阴影区域。然后在右侧的“布局”面板上选择Vgrow和Hgrow以“始终”。 这样地:
绝对有充分的理由不使用这些。JavaFX和JavaFXML是其他人(即微软)工作的糟糕翻版。甲骨文提供的工具看起来像是直接从1975年开始的。您正在为这个产品和框架而挣扎,因为它考虑得很差,执行得更差。发挥你的潜力,加入网络革命,角度,反应,MVC等等。只是不要因为有人想惩罚他的程序员同伴而上吊。从2000年到2005年,爪哇曾处于鼎盛时期。这段时间结束了,其余的人还在等着。不要挂断电话,升级你自己。

绝对有理由不使用这些。JavaFX和JavaFXML是其他人(即微软)工作的糟糕翻版。甲骨文提供的工具看起来像是直接从1975年开始的。您正在为这个产品和框架而挣扎,因为它考虑得很差,执行得更差。发挥你的潜力,加入网络革命,角度,反应,MVC等等。只是不要因为有人想惩罚他的程序员同伴而上吊。从2000年到2005年,爪哇曾处于鼎盛时期。这段时间结束了,其余的人还在等着。不要挂断电话,升级您自己。

我以一个不工作的FXML为例发布了对我的问题的编辑。我以一个不工作的FXML为例发布了对我的问题的编辑。这不是一个非常有用的答案。请阅读这不是一个非常有用的答案。请阅读