我要监听JCheckBox 打勾与不打勾的情况,但是发现一个问题,只有当JCheckBox打勾后,后面才会触发ItemListener,
如果一开始JCheckBox 没有打勾的话就不会触发itemStateChanged,一定要打勾后才会触发事件监听,请问各位前辈是否时java的一个bug?代码片段如下: public void itemStateChanged(ItemEvent e){
Object obj=e.getItem();
if(obj.equals(this.chsdf)){
if(this.chsdf.isSelected()){
System.out.println("ok");
}else{
System.out.println("sdf");
}
}
}
private JCheckBox chsdf = new JCheckBox();
this.chsdf.setSelected(false);//此时不会触发itemStateChanged
//this.chsdf.setSelected(true);//触发itemStateChanged
setSelected(false)时为何没有触发itemStateChanged,是否时java的一个bug(本人用jdk1.5),恳请高手解答。
如果一开始JCheckBox 没有打勾的话就不会触发itemStateChanged,一定要打勾后才会触发事件监听,请问各位前辈是否时java的一个bug?代码片段如下: public void itemStateChanged(ItemEvent e){
Object obj=e.getItem();
if(obj.equals(this.chsdf)){
if(this.chsdf.isSelected()){
System.out.println("ok");
}else{
System.out.println("sdf");
}
}
}
private JCheckBox chsdf = new JCheckBox();
this.chsdf.setSelected(false);//此时不会触发itemStateChanged
//this.chsdf.setSelected(true);//触发itemStateChanged
setSelected(false)时为何没有触发itemStateChanged,是否时java的一个bug(本人用jdk1.5),恳请高手解答。
itemListener = new ItemListener(){ public void itemStateChanged(ItemEvent e) {
Object obj=e.getItem();
if(obj.equals(jcb)){
if(jcb.isSelected()){
System.out.println("ok");
}else{
System.out.println("sdf");
}
}
}
};
jcb.setSelected(false);
jcb.addItemListener(itemListener);
我贴出全部代码import java.awt.Rectangle;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JCheckBox;
import javax.swing.JPanel;public class MainClass extends JPanel { ItemListener itemListener = new ItemListener() { public void itemStateChanged(ItemEvent e) { Object obj = e.getItem();
if(obj.equals(chsdf)) {
if(chsdf.isSelected()) {
System.out.println("ok");
}
else {
System.out.println("sdf");
}
} } }; public MainClass() {
try {
jbInit();
this.chsdf.setSelected(false);//此时为何没有触发itemStateChanged
}
catch(Exception ex) {
ex.printStackTrace();
}
} final JCheckBox chsdf = new JCheckBox(); public static void main(String[] args) { try { }
catch(Exception e) {
System.out.println(e);
}
} public void jbInit() throws Exception {
this.setLayout(null); chsdf.setText("jCheckBox1");
chsdf.setBounds(new Rectangle(216, 66, 85, 23));
this.add(chsdf);
this.chsdf.addItemListener(itemListener);
}}请问直接运行后有打印出“sdf”的吗?