Во-первых, работая над этим проектом, мне нужно реализовать JApplet размером 600x600 пикселей, который представляет собой сетку 10x10 (с горизонтальным и вертикальным промежутком в 4 пикселя) из 100 JButton. Программа запускается со скрытыми всеми кнопками, кроме одной, и некоторые кнопки открываются при каждом нажатии кнопки. Каждый щелчок также вызывает изменение цвета фона и названия кнопки. Когда все кнопки открыты, цвет фона меняется на черный и остается черным, пока пользователь не закроет апплет.
Кнопки должны быть сохранены в массиве 10x10 типа JButton. Кнопки имеют метку из 2-значного числа, которое содержит номер строки и столбца, то есть кнопка в верхнем левом углу в нулевой строке нулевого столбца помечена как 00.
Выберите 5 цветов (кроме черного), которые вы хотите использовать для своего фона.
Когда апплет запущен, фон имеет нейтральный цвет, и видна только кнопка 00.
У меня возникли проблемы с отображением 100 кнопок от 00 до 99 в сетке 10x10. Я чувствую, что мои циклы for могут быть неправильными, и поэтому кнопки не создаются должным образом:
public class Project5 extends JApplet implements ActionListener {
JButton button;
Container contentPane;
public void init() {
setSize(600, 600);
contentPane = getContentPane();
contentPane.setBackground(Color.WHITE);
GridLayout grid = new GridLayout(10,10);
grid.setVgap(4);
JButton[][] btns = new JButton[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
button = new JButton();
button.addActionListener(this);
contentPane.add(button);
button.setVisible(true);
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
Container contentPane = getContentPane();
button.setVisible(false);
int clicks = 0;
clicks++;
if (clicks % 5 == 0) {
contentPane.setBackground(Color.PINK);
} else if (clicks % 5 == 1) {
contentPane.setBackground(Color.GREEN);
} else if (clicks % 5 == 2) {
contentPane.setBackground(Color.BLUE);
} else if (clicks % 5 == 3) {
contentPane.setBackground(Color.YELLOW);
} else if (clicks % 5 == 4) {
contentPane.setBackground(Color.RED);
}
}
public void checkDone() {
//if all buttons visible, change contentPane color to black.
}
}