如何使 javafx 标签适合文本?

How to make javafx label fit text?

我有一个对话框 window 用于将记录添加到 table。至于我不想为每个 table 创建例如 10 个 fxml 文件,我只有一个:

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

<?import com.sun.javafx.scene.control.skin.IntegerField?>
<?import javafx.scene.layout.ColumnConstraints?>
<GridPane alignment="BASELINE_CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="300.0" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.{...}.gui.dialogs.AddingDialogController" fx:id="addingDialogPane">
    <columnConstraints>
        <ColumnConstraints hgrow="ALWAYS" minWidth="50.0" prefWidth="100.0" />
        <ColumnConstraints hgrow="ALWAYS" minWidth="50.0" prefWidth="100.0" />        
    </columnConstraints>
    <rowConstraints>        

    </rowConstraints>
    <children>


    </children>
    <padding>
        <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
    </padding>
</GridPane>

并根据用户想要添加的记录类型动态添加元素。 问题是,当用户打开添加对话框时,他会看到以下内容:

这就是问题所在。元素相互覆盖。 如果我将 GridPane 的最小宽度设置为更大的值,我会遇到另一个问题:

左边的大空space。如何在没有这么大的空 spaces 的情况下正确地将元素适合窗格?

UPD: 这里是用于向窗格添加元素的方法:

public void setAgent(Agent agent) {

        addingDialogPane.add(AgentNameLabel,1,1);
        addingDialogPane.add(name,2,1);
        addingDialogPane.add(loginLabel, 1,2);
        addingDialogPane.add(login, 2, 2);
        addingDialogPane.add(extUidLabel, 1, 3);
        addingDialogPane.add(extUid, 2, 3);
        addingDialogPane.add(passwordLabel, 1, 4);
        addingDialogPane.add(password, 2, 4);

        addingDialogPane.add(confirm, 1, 5);
        this.agent = agent;
        name.setText(agent.getName());
        login.setText(agent.getLogin());
        extUid.setText(agent.getExt_uid());
        password.setText(agent.getPassword());
    }

列(和行)索引从 0 开始。因此您的列约束适用于第 0 列和第 1 列;您已将元素添加到第 1 列和第 2 列。因此文本字段仅获得默认列约束,而空列 0 设置为始终增长。将元素添加到第 0 列和第 1 列,我认为它会起作用。