我有一个对话窗口,用于向表中添加记录。至于我不想为每个表创建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的最小宽度设置为更大的值,我会遇到另一个问题:
左边的大空地。如何在没有太大空格的情况下正确地将元素适合窗格?
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 :(得分:1)
列(和行)索引从0开始。因此列约束适用于列0和1;您已将列添加到第1列和第2列。因此,文本字段只获取默认列约束,空列0设置为始终增长。将元素添加到第0列和第0列,我认为它会起作用。