我有以下Java代码:
JFrame frame = new JFrame();
frame.setTitle("Sudoku");
frame.setLocationRelativeTo(null);
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(ruudustik.peaRuudustik()); //returns JPanel with textfields inside
frame.setVisible(true);
ruudustik.peaRuudustik功能:
public static JPanel peaRuudustik() {
JPanel panel = new JPanel();
for (int i = 0; i < 81; i++) {
final JTextField ruut = new JTextField();
ruut.setHorizontalAlignment(JTextField.CENTER);
ruut.setSize(30, 30);
ruut.setColumns(1);
ruut.setName(Integer.toString(i));
panel.add(ruut);
}
return panel;
}
如何更改特定的文本字段值。每个文本字段都有唯一的名称。
答案 0 :(得分:0)
您可以迭代面板子组件,但我建议采用另一种方法 - 例如使用Map
:
Map<Integer, JComponent> textFields = new HashMap<Integer, JTextField>();
...
textFields.put(i, ruut);
ruut.setName(Integer.toString(i));
panel.add(ruut);
然后,只需textFields.get(id);
答案 1 :(得分:0)
由于JTextField
名称是基于整数的字符串,访问它们的最简单方法是使用如下字段数组:
JTextField[] myTextFields = new JTextField[81];
for (int i = 0; i < myTextFields.length; i++) {
myTextFields[i] = new JTextField();
myTextFields[i].setName(Integer.toString(i));
...
}