我有一个二维数组按钮,设置为产生一个6x6网格。我还有一个组合框,其中包含我希望数组在单击时更改为的不同大小。我该怎么做?
// Initializing 2D buttons with values i,j
btn[i][j] = button;
button.setPrefSize(35, 40);
gridPane.add(button, i, j);
button.setDisable(false);
}
}
final ComboBox cb = new ComboBox();
cb.getItems().addAll(
"4x4",
"6x6",
"8x8",
"10x10"
);
gridPane.add(cb, 11, 2);
答案 0 :(得分:0)
您可以在方法中填写gridpane
所需的所有内容,并在combobox
更改时调用它(我创建了init()
只是为了放置代码)。
在listener
上添加ComboBox
并在值更改时获取文字,取2 ints
并将其提供给将刷新的方法
final List<String> values = Arrays.asList("", "X", "O");
final GridPane gridPane /* = */:
final ComboBox<String> cb = new ComboBox<>();
public void init() {
addButtonToGrid(6, 6);
cb.getItems().addAll("4x4", "6x6", "8x8", "10x10");
cb.valueProperty().addListener((observable, oldValue, newValue) -> {
String[] size = newValue.split("x");
addButtonToGrid(Integer.parseInt(size[0]),Integer.parseInt(size[1]));
});
}
private void addButtonToGrid(int sizeR, int sizeC) {
gridPane.getChildren().clear();
for (int i = 0; i < sizeC; i++) {
for (int j = 0; j < sizeR; j++) {
final Button button = new Button("");
button.setOnAction(event -> {
int valueIndex = values.indexOf(button.getText());
button.setText(values.get((valueIndex + 1) % values.size()));
});
button.setPrefSize(35, 40);
gridPane.add(button, i, j);
button.setDisable(false);
}
}
}