Написал следующий код:
public class GUI extends JFrame {
GUI() {
super("Кнопки");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300,400);
setVisible(true);
setResizable(false);
JButton buttons[] = new JButton[9];//Создаю массив из 9 кнопок
JPanel panel = new JPanel();//Создаю панель на которую буду размещать кнопки
panel.setLayout(null);//Говорю что не буду использовать менеджер размещений и задам координа в ручную
int x = 30, y = 30; // Начальные координаты первой кнопки
int wide = 20, height = 20;//Размер кнопки
for (int i = 0; i < 10;) {//Пробегаем массив кнопок
for (int j = 0; j < 3 && i < 9; j++) {//формируем "матрицу"
buttons[i] = new JButton(""+ i);//Создание I-той кнопки
buttons[i].setSize(wide,height);//Задаем I-той кнопке размер
buttons[i].setLocation(x,y);//Задаем I-той кнопке координаты
panel.add(buttons[i]);//Добавляем I-тую кнопку на панель
y += 30; //Задаем смещение строки по У
i++;//переходим к следующей кнопке
}
x += 30;//Задаем смещение столбца по Х
y = 30;//Возвращаем строку на начало
}
setContentPane(panel);//Устанавливаем панель в качестве контента окна
}
}
И в итоге должна вывестись "матрица" из 9 кнопок 3 на 3. Но вместо этого нечего не отрисовывается.
Вот этот метод "setVisible(true);" должен вызываться последним, то есть после формирования JFrame.
Для это Вам можно добавить метод main в Ваш класс:
public static void main(String[] args) {
GUI gui = new GUI();
gui.setVisible(true);
}
После того, как вы перенесете этот метод, Вы увидите, что у Вас вообще все перестало отображаться, а причина кроется в Вашем "бесконечном цикле", например у меня x достиг уже -1600063728.
Добавьте условие при котором Вам необходимо выйти из первого for:
x += 30;//Задаем смещение столбца по Х
y = 30;//Возвращаем строку на начало
if (i + 1 == 10) {
break;
}
Если же Вы не хотите выносить вызов метода вне конструктора, переместите его вниз:
import javax.swing.*;
public class GUI extends JFrame {
GUI() {
super("Кнопки");
setSize(300, 400);
setResizable(false);
JButton buttons[] = new JButton[9];//Создаю массив из 9 кнопок
JPanel panel = new JPanel();//Создаю панель на которую буду размещать кнопки
panel.setLayout(null);//Говорю что не буду использовать менеджер размещений и задам координа в ручную
int x = 30, y = 30; // Начальные координаты первой кнопки
int wide = 20, height = 20;//Размер кнопки
for (int i = 0; i < 10; ) {//Пробегаем массив кнопок
for (int j = 0; j < 3 && i < 9; j++) {//формируем "матрицу"
buttons[i] = new JButton("" + i);//Создание I-той кнопки
buttons[i].setSize(wide, height);//Задаем I-той кнопке размер
buttons[i].setLocation(x, y);//Задаем I-той кнопке координаты
panel.add(buttons[i]);//Добавляем I-тую кнопку на панель
y += 30; //Задаем смещение строки по У
i++;//переходим к следующей кнопке
}
x += 30;//Задаем смещение столбца по Х
y = 30;//Возвращаем строку на начало
if (i + 1 == 10) {
break;
}
}
add(panel);//Устанавливаем панель в качестве контента окна
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new GUI();
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости