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

パネルサブコンポーネントを反復処理することもできますが、別のアプローチをお勧め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 に答える