2014-11-09 4 views
0

Я написал решение sudoku на Java и хочу сделать его визуальным. Следующий код создает JTextField, который будет использоваться для ввода один из номеров, указанных в судоку:Как создать и управлять большим количеством JTextFields?

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, любая помощь очень ценится.

+4

Используйте 'list' или массив для сохранения полей, использование петель, чтобы управлять ими – MadProgrammer

+0

Как сказал @MadProgrammer, вам необходимо использовать структуру данных. Лучшим был бы массив 2d типа JTextField, поэтому вы могли бы добавить все ваши JTextFields в массив и облегчить его работу. –

ответ

0
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]); 
     } 
    } 
} 

}

+0

Спасибо! Это было очень полезно, я не знал, что вы можете помещать текстовые поля в массив, я обязательно буду использовать это много! –

0

Сделать 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]); 
    } 
}