私は現在、ActionListeners の使用方法を学んでおり、その方法についていくつか質問があります。
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(0,1));
frame.setSize(250,250);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0,1));
final JTextField text1 = new JTextField(" ",10);
final JTextField text2 = new JTextField(" ",10);
final JTextField text3 = new JTextField(" ",10);
final JTextField text4 = new JTextField(" ",10);
panel.add(text1);
panel.add(text2);
panel.add(text3);
panel.add(text4);
ActionListener a = new ActionListener(){
public void actionPerformed(ActionEvent e){
text4.setText(text1.getText()+""+text2.getText()+""+text3.getText());
}
};
JButton buton = new JButton("Go");
buton.addActionListener(a);
frame.add(panel);
frame.add(buton);
frame.revalidate();
}
例のコードを考えると、これがメイン クラス内で使用する唯一のメソッドです。リスナーでわかるように、私は現在、main() 内に実装されているいくつかの匿名リスナーを使用しています。問題は...フレーム内のボタンをクリックすると、実際には別の要素のコンテンツを変更する必要があるため、それらを使用します。私の質問は、他のコンポーネントを使用できるようにしながら、リスナーを非匿名にすることはできますか? 私が考えているのは、ボタンの ActionListener 実装を別のクラスに移動することですが、他の要素のプロパティに到達するにはどうすればよいですか? 例 :
class listener implements ActionListener{
public void actionPerformed(ActionEvent e){
text4.setText(text1.getText()+""+text2.getText()+""+text3.getText());
}
}
次に、私の main() クラスで、単に呼び出したい:
listener l = new listener();
buton.addActionListener();
そして、この外部リスナーがメインクラス内の要素のプロパティにアクセスできるようにすることもできます。