gpt4 book ai didi

java - 如何在 javafx 中添加文本框而不移动按钮

转载 作者:行者123 更新时间:2023-12-02 01:27:24 24 4
gpt4 key购买 nike

我正在尝试创建一个 javafx 程序来显示一些文本框和按钮,但每次添加文本框时,它最终都会移动按钮。

    GridPane pane = new GridPane();
pane.setAlignment(Pos.CENTER);
pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
pane.setHgap(6);
pane.setVgap(7);

pane.add(new Label("Text1:"), 0, 3);
pane.add(new TextField(), 1, 3);
pane.add(new TextField(), 1, 3, 1, 1);
pane.add(new Label("Text2:"), 2, 3);
pane.add(new TextField(), 3, 3);
pane.add(new Label("Text3:"), 4, 3);
pane.add(new TextField(), 5, 3);

Button bt1 = new Button("Button");
bt1.setMinSize(70, 0);
pane.add(bt1, 1, 4);
Button bt2 = new Button("Button");
bt2.setMinSize(70, 0);
pane.add(bt2, 2, 4);
Button bt3 = new Button("Button");
bt3.setMinSize(70, 0);
pane.add(bt3, 3, 4);

我希望文本框更靠近标签,按钮之间的空间更小。

最佳答案

GridPane 对齐同一行/列中的节点,并且(假设除 1 之外没有使用行/列跨度)确保位于不同行/列中的节点不会重叠 a 的范围节点采用垂直/水平方向。

您试图独立对齐 Labels/TextFields 和 Buttons,但这不起作用,至少不起作用除非你让事情变得不必要的复杂。

我建议不要使用 GridPane,而是简单地使用包含 2 个 HBoxVBox:

@Override
public void start(Stage primaryStage) throws Exception {
HBox textFieldContainer = new HBox(
new Label("Text1:"),
new TextField(),
new Label("Text2:"),
new TextField(),
new Label("Text3:"),
new TextField());
textFieldContainer.setSpacing(6);
textFieldContainer.setAlignment(Pos.CENTER_LEFT);

// add margin to all but the first Label/TextField pairs
Insets innerLabelInsets = new Insets(0, 0, 0, 20);
List<Node> children = textFieldContainer.getChildren();
for (int i = 2, size = children.size(); i < size; i +=2) {
HBox.setMargin(children.get(i), innerLabelInsets);
}

Button bt1 = new Button("Button");
bt1.setMinSize(70, 0);
Button bt2 = new Button("Button");
bt2.setMinSize(70, 0);
Button bt3 = new Button("Button");
bt3.setMinSize(70, 0);
HBox buttonContainer = new HBox(bt1, bt2, bt3);
buttonContainer.setSpacing(6);

VBox pane = new VBox(textFieldContainer, buttonContainer);
pane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
pane.setSpacing(7);

Scene scene = new Scene(pane);

primaryStage.setScene(scene);
primaryStage.show();
}

关于java - 如何在 javafx 中添加文本框而不移动按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56695307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com