Как использовать массив, содержащий JButtons в цикле for, для рисования сетки?

#java #arrays #for-loop #jframe #jbutton

#java #массивы #for-цикл #jframe #jbutton

Вопрос:

 public void loadBoard()
{
for(int row = 0; row < 5; row  )
     for(int col = 0; col < 5; col  )
    {
        buttons[row][col] = new JButton("");
            buttons[row][col].addActionListener(this);
            this.add(buttons[row][col]);
    }
}
  

Комментарии:

1. мне уже удалось частично построить цикл for в верхней части. но мне все еще не хватает некоторых частей, чтобы создать 2D-массив кнопок размером 5 X 5.

2. Пожалуйста, ответьте на свой вопрос более подробно, иначе он может быть закрыт как вопрос, на который нельзя отвечать. Я бы отредактировал ваш вопрос и добавил к нему подробности. Пожалуйста, проверьте эту ссылку, чтобы увидеть, какие детали необходимы: Как задавать вопросы разумным способом

3. что вы подразумеваете под детализацией? o__o

4. Смотрите мою ссылку выше. Вы просто публикуете код, вот и все, и вы предполагаете, что мы понимаем, что вы пытаетесь сделать, не сообщая нам явно. Ну, мы этого не делаем, поэтому вам нужно дать нам несколько предложений, описывающих вашу проблему. Кроме того, как было рекомендовано ранее, вы, вероятно, получите более быстрые и качественные ответы, если создадите и опубликуете SSCCE . Просто спросите Эндрю.

5. @Hovercraft: «Просто спроси Эндрю». Приятно знать, что некоторые люди слушают, но жаль, что это люди, которые уже прониклись идеей, а не те, кто больше всего нуждается в совете. 😉

Ответ №1:

Используйте GridLayout или любой другой Layout , если уж на то пошло, для их размещения.

 JPanel panel = new JPanel();
panel.setLayout(new GridLayout(rows, cols));

for (int row = 0; row < rows;   row)
{
    for (int col = 0; col < cols;   col)
    {
        panel.add(buttons[row][col]);
    }
}

this.add(panel);
  

Комментарии:

1. хммм, эта рекомендация выглядит знакомой. О да, это верно; я сделал это около часа назад.

2. @Судно на воздушной подушке, полное угрей, я, честно говоря, этого не видел. У меня есть привычка не читать дополнительные комментарии, которые автоматически скрыты. Не стесняйтесь публиковать ответ (дословно), и я проголосую за ваш.