JFrames中的Java搜索

时间:2012-11-08 17:59:56

标签: java jframe

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

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

2 个答案:

答案 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));
   ...
}