簡體   English   中英

我如何將二維數組填充為相同的值

[英]how do I fill my 2d array to the same values

我希望網格上的所有按鈕在每次單擊時都從空白變為X到O,然后又變為空白。 它當前僅適用於數組中的第一個元素,因為I和j的值都為0。是否需要一個類似於初始化按鈕位置的循環?

盡管我需要添加兩個嵌套的for循環,但是我已經嘗試過了,而且已經奏效。

有什么建議么?

您使用最終字段ij用於設置事件處理程序。 如果希望所有按鈕都使用相同的方式處理單擊,則需要將事件處理程序注冊到每個按鈕。

由於您只能在循環內部有效地訪問最終變量,因此您需要對循環變量進行最終復制或僅聲明Button的局部變量。

final List<String> values = Arrays.asList("", "X", "O");

for(int i=0; i<btn.length; i++){
    for(int j=0; j<btn.length;j++){
        final Button button = new Button("");

        button.setOnAction(event -> {
            int valueIndex = values.indexOf(button.getText());
            button.setText(values.get((valueIndex+1) % values.size()));
        });
        // Initializing 2D buttons with values i,j
        btn[i][j] = button;                      
        button.setPrefSize(35, 40);
        gridPane.add(button, i, j);
        // button.setDisable(false);
    }
}

您可以定義一個事件處理程序,並將其分配給循環中的所有按鈕

EventHandler<ActionEvent> eventHandler = new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                 Button button = (Button) event.getSource();

                 switch (button.getText()) {
                    case "":
                      button.setText("X");
                      break;
                    case "X":
                      button.setText("O");
                      break;
                    default:
                      button.setText("");
                      break;
                }
            }
        };

//Two FOR loops used for creating 2D array of buttons with values    i,j
for(int i=0; i<btn.length; i++){
        for(int j=0; j<btn.length;j++){

           // Initializing 2D buttons with values i,j
           btn[i][j] = new Button();                      
           btn[i][j].setPrefSize(35, 40);
           gridPane.add(btn[i][j], i, j);
           btn[i][j].setText("");
           btn[i][j].setDisable(false);

           btn[i][j].setOnAction(eventHandler);
        }        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM