好的,如果我将ActionListener
添加到GUI元素中,并且这是我唯一使用该ActionListener
的元素,我使用以下哪些行(a,b)来获取复选框选择状态是否重要?
final JCheckBox checkbox = (JCheckBox)this.buildResult.get("cbDebugTick");
checkbox.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent event){
boolean bChecked =
// (a) checkbox.isSelected();
// (b) ((JCheckBox)event.getSource()).isSelected();
model.setPrintDebugOn(bChecked);
}
});
我认为如果我将ActionListener
对象添加到多个GUI元素中,那么使用(b)是有道理的。
在(b)中,盲目地将event.getSource()
强制转换为JCheckBox
是否可以,因为我是添加动作监听器的人,还是应该编写防御性代码并进行instanceof
检查?
注意:这个问题是在事件监听器的一般上下文中;kdgregory在下面提出了一些关于复选框的好观点,我没有考虑到。