我想跟踪按特定顺序点击的特定组件。
我正在使用getSource和这样的标志:
public void actionPerformed(ActionEvent e) {
JButton q = (JButton)e.getSource();
JRadioButton w = (JRadioButton)e.getSource();
if (q.equals(mybutton)) {
if (flag == false) {
System.out.print("test");
flag = true;
}
}
这适用于JButtons,问题是它也用于JRadioButtons。如果我对它们都使用getSource,请单击一个按钮,这将导致强制转换异常错误,因为该按钮无法强制转换为Radiobutton。
我该如何解决这个问题?
答案 0 :(得分:2)
您可以使用==
来比较引用,因为引用不会更改。
if(e.getSource() == radBtn1){
// do something
}
我过去曾经使用过它,它对我来说就像是一种魅力。
对于类强制转换问题,您需要使用instanceof
来检查事件源所属的类。如果原因是JButton
并且您盲目地将其投放到JRadioButton
,则会导致异常。你需要这个:
Object source = e.getSource();
if (source instanceof JButton){
JButton btn = (JButton) source;
} else if (source instanceof JRadioButton){
JRadioButton btn = (JRadioButton) source;
}