用组合框改变数组的大小

时间:2018-05-08 18:16:51

标签: java arrays javafx combobox

我有一个二维数组按钮,设置为产生一个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);

1 个答案:

答案 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);
        }
    }
}