いくつかのラジオ ボタンを含む JPanel Child を作成しました。ラジオ ボタンがクリックされるたびに、子からも ActionEvent が生成されるようにします。このアクション イベントには、実際にイベントを生成したボタンへの参照が「含まれる」必要があります。
この子は、個々のラジオ ボタンをリッスンする代わりに、子からのイベントをリッスンする別の JPanel 親内のコンポーネントとして使用されます。
これどうやってするの ?
これまでのコード -
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class RadioListener extends JPanel implements ActionListener{
public static final String id = "id";
public RadioListener(){
for(int i = 1; i < 5; i++){
JRadioButton jrb = new JRadioButton(i + "", false);
jrb.putClientProperty(id, i);
this.add(jrb);
jrb.addActionListener(this);
}
}
public void actionPerformed(ActionEvent e){
JRadioButton jrb = (JRadioButton) e.getSource();
Integer id = (Integer) jrb.getClientProperty(RadioListener.id);
System.out.println("id " + id);
}
public static void main(String[]args){
JFrame frame = new JFrame("Radio buttons");
frame.getContentPane().setLayout(new FlowLayout());
frame.setSize(400, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new RadioListener());
frame.setVisible(true);
}
}