Java - Создать сетку кнопок с массивом, все с уникальным идентификатором - PullRequest
0 голосов
/ 09 апреля 2020

Я делаю игровую доску, для которой требуется сетка кнопок. У меня есть метод, в котором я могу указать ширину и высоту доски и нарисовать ее так:

for (int i = 0; i < gameBoardWidth; i++) {
            for (int j = 0; j < gameBoardHeight; j++) {
                gameLayout.add(tiles[j], j, i);

            }
        }

Код выше работает отлично, но проблема в том, что у меня есть массив кнопок. размер массива равен width * height. Каждая кнопка в этом массиве должна иметь уникальный идентификатор, увеличенный с 1 до n . Ранее я делал доску этим методом

for(int i = 0; i < gameBoardDimension; i++) {
            tiles[i] = new Button("");
            tiles[i].setMinSize(gameButtonWidth, gameButtonHeight);
            tiles[i].setId(Integer.toString(i));

            Button btn = tiles[i];
            btn.setOnAction(e -> {
                turn = 1;
                int ID = Integer.parseInt(btn.getId());
                setMove(ID, turn, btn);
                setAIMove();
            });
        }

Но с помощью описанного выше способа их невозможно отобразить в сетке. Как я могу показать кнопки в сетке, чтобы каждая кнопка в массиве имела идентификатор от 1 до n , а n - размер массива?

1 Ответ

2 голосов
/ 09 апреля 2020

Создать идентификатор в виде строки (i), умноженной на ширину плюс столбец (j) (плюс 1, чтобы начать с 1 вместо 0) в l oop

for (int i = 0; i < gameBoardWidth; i++) {
    for (int j = 0; j < gameBoardHeight; j++) {
         Button b = new Button("");
         //... other stuff for button
         int id = i * gameBoardWidth + j + 1;
         b.setId(Integer.toString(id));

         //...
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...