Как мне создать и управлять большим количеством полей JTextFields?
Я написал решатель судоку на Java и хочу сделать его визуальным. Следующий код создает JTextField, который будет использоваться для ввода одного из чисел, указанных в загадке судоку:
public class Visual extends JFrame {
private static final long serialVersionUID = 1L;
int x = 0;
int y = 0;
public Visual() {
setSize(600, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
GridBagConstraints gbc = new GridBagConstraints();
JPanel panel = new JPanel(new GridBagLayout());
JTextField box00 = new JTextField("0", 3);
gbc.gridx = 0;
gbc.gridy = 0;
panel.add(box00);
}
}
Тем не менее, мне нужно добавить 81 блок JTextField, который будет иметь позиции сетки и должен быть добавлен на панель. Есть ли быстрый способ сделать это без записи кода 81 раз? Я новичок в Java, любая помощь очень ценится.
2 ответа
Решение
public class Visual {
GridBagConstraints gbc = new GridBagConstraints();
JPanel panel = new JPanel(new GridBagLayout());
JTextField[][] box = new JTextField[9][9];
public Visual() {
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
box[i][j] = new JTextField("0", 3);
gbc.gridx = i;
gbc.gridy = j;
panel.add(box[i][j]);
}
}
}
}
Сделать 2D массив из JTextField
s.
JTextField[][] box = new JTextField[9][9];
for (int i=0; i<9; i++) {
for (int j=0; j<9; j++) {
box[i][j] = new JTextField(...);
panel.add(box[i][j]);
}
}