如何使javafx标签适合文本?

时间:2015-06-05 09:10:15

标签: user-interface javafx

我有一个对话窗口,用于向表中添加记录。至于我不想为每个表创建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>

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

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

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

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());
    }

1 个答案:

答案 0 :(得分:1)

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