gpt4 book ai didi

java - 创建动态 GridPane(添加和删除行)

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:19 25 4
gpt4 key购买 nike

所以我需要在选择或取消选择 MenuItem 时在 GridPane 中添加和删除行。

So when selecting a MenuItem it should add 1 or 2 rows in the existing GridPane.取消选择时应删除 1 或 2 行。

总有一个固定的行不能被删除。添加或删除的行应在此固定行上方添加或删除。

例如:

添加行:

added ---------  

added ---------

fixed ---------

删除行:

removed 

removed

fixed -----------

我知道如何处理菜单项的操作。我只需要有关动态网格 Pane 的帮助。

GridPanes 有一个内置的 addRow 函数,也许可以使用它。我该如何解决这个问题?谢谢!所有提示表示赞赏。

最佳答案

这个答案是关于隐藏和显示 GridPane 的行,而不是添加和删除它们,因为我认为每次 MenuItem< 时不创建新对象更合理 被选中。

我已经为您制作了一个示例,其中包含一个 GridPane 和一个 Button(而不是 MenuItem,但它在这里具有相同的功能) .按下按钮时,GridPane 的前两行将显示或隐藏。

我用过 RowConstraints类:我为 GridPane 添加了三个 RowConstraints,然后在按钮上按下 maxHeightProperty前两个约束设置为 0(隐藏)或 30(显示)。

public class Main extends Application {

private SimpleBooleanProperty expanded = new SimpleBooleanProperty(true);

@Override
public void start(Stage primaryStage) {
try {
BorderPane root = new BorderPane();
Scene scene = new Scene(root,400,400);


VBox vbox = new VBox();


GridPane grid = new GridPane();
// Just to see that the lines are actually added
grid.setGridLinesVisible(true);
grid.setPrefWidth(200);

grid.getRowConstraints().add(new RowConstraints(30));
grid.getRowConstraints().add(new RowConstraints(30));

grid.addRow(2, new Label("I am fixed!"));
grid.getRowConstraints().add(new RowConstraints(30));



Button showOrHideButton = new Button();
showOrHideButton.setOnAction((e) -> {
expanded.set(expanded.not().get());
});


vbox.getChildren().addAll(showOrHideButton, grid);

expanded.addListener((obs, oldVal, newVal) -> {
if(newVal) {
grid.getRowConstraints().get(0).setMaxHeight(30);
grid.getRowConstraints().get(1).setMaxHeight(30);
showOrHideButton.setText("Hide");
} else {
grid.getRowConstraints().get(0).setMaxHeight(0);
grid.getRowConstraints().get(1).setMaxHeight(0);
showOrHideButton.setText("Show");
}
});

expanded.set(false);


root.setCenter(vbox);

primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
launch(args);
}
}

它产生这样的东西:

enter image description here

关于java - 创建动态 GridPane(添加和删除行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38301244/

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