0

我有以下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;
}

我如何更改特定的文本字段值。每个文本字段都有唯一的名称。

4

2 回答 2

0

您可以迭代面板子组件,但我推荐另一种方法 - 使用 a Map,例如:

Map<Integer, JComponent> textFields = new HashMap<Integer, JTextField>();
...
textFields.put(i, ruut);
ruut.setName(Integer.toString(i));
panel.add(ruut);

然后,只需通过textFields.get(id);

于 2012-11-08T18:24:40.577 回答
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));
   ...
}
于 2012-11-08T18:42:07.913 回答