名前付きで、ボタンのインスタンスを即時メソッドのローカル変数に保存することを意味しているようです。それを回避しようとすると、コードが読みにくくなる可能性があります。しかし、あなたの質問に答えるには:
最も明白な方法は、古くて新しく人気のある二重ブレースのイディオムを使用することです。
alphabetPanel.add(new JButton("<html><center>" + (char)i) {{
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
...
}
});
}});
この場合、 i は final ではないため、匿名の内部クラスからは使用できないことに注意してください。それを別の (最終) 変数に割り当てるか、ループを再構成してください。
別のルートは、アクションを経由することです。(通常、アクションは貧乏人のハッシュテーブルであるため、避けることをお勧めします。ただし、ButtonModelは「良い」です。)
alphabetPanel.add(new JButton(new AbstractAction("<html><center>" + (char)i) {
public void actionPerformed(ActionEvent event) {
...
}
}));
それからもちろん、アプリケーション固有のライブラリの方法があります:
Form alphabetForm = new Form(alphabetPanel);
for (char c='A'; c <= 'Z'; ++c) {
alphabetForm.button("<html><center>" + c, new ActionListener() {
public void actionPerformed(ActionEvent event) {
...
}
});
}