我做了一個JPanel兒童,其中包含一對單選按鈕。無論何時單擊單選按鈕,我都希望從Child生成一個ActionEvent。這個動作事件應該「包含」對實際產生事件的按鈕的引用。Parent JPanel - 如何監聽由一個Child JPanel組件生成的事件?
此子元素將用作另一個JPanel Parent中的組件,該父元素將監聽來自Child的事件,而不是聽各個單選按鈕。
我該怎麼做?
到目前爲止的代碼 -
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);
}
}
@MadProgrammer - 這個問題是不同的。這是理論上的。我想修改我的代碼,使其正常工作。我正在嘗試使用您在答案中給出的建議。 –