好的,所以如果我将 an 添加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 在下面有一些优点,特别是关于:我忽略考虑的复选框。