JCheckBox添加ItemListener后无法选中

stshow 2013-02-02 05:21:52
我想实现一个当JCheckBox被选中时弹出颜色选择对话框的程序(默认初始化时不选中)
但以下代码在点击选中时可以弹出对话框,但是选好颜色后主窗体的那个JCheckBox不显示选中状态,请问哪里有问题?

jcbHighlight.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
if(e.getStateChange()==ItemEvent.SELECTED){
colorHighlight=JColorChooser.showDialog(settingFrame, "Choose temp color", Color.RED);
}
else{
colorHighlight=null;
}
}
});
...全文
369 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
littao 2013-02-07
我是小白,不懂,一般我是这样写:
jcbHighlight.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                if(jcbHighlight.isSelected()){
                    colorHighlight=JColorChooser.showDialog(settingFrame, "Choose temp color", Color.RED);
                }
                else{
                    colorHighlight=null;
                }
            }
        });
  • 打赏
  • 举报
回复
suciver 2013-02-06
不可能说添加监听后就无法选中啊,应该是楼主哪里写的有问题。swing内部的监听器是基于责任链模式的。你添加一个监听是不会把原来的覆盖的。
  • 打赏
  • 举报
回复
stshow 2013-02-06
引用 4 楼 fangmingshijie 的回复:
逻辑理清就好做了。
?您知道怎么写了?能告诉我诗怎么解决#3的问题的么
  • 打赏
  • 举报
回复
因为你没有设置选中,你只是判断它是否被选择了。应该有setSelected之类的方法吧, if(e.getStateChange()==ItemEvent.SELECTED){ //在这里set下 colorHighlight=JColorChooser.showDialog(settingFrame, "Choose temp color", Color.RED); } set一下
  • 打赏
  • 举报
回复
stshow 2013-02-04
原谅自顶一下。。。很困扰
  • 打赏
  • 举报
回复
逻辑理清就好做了。
  • 打赏
  • 举报
回复
stshow 2013-02-04
引用 2 楼 fangmingshijie 的回复:
因为你没有设置选中,你只是判断它是否被选择了。应该有setSelected之类的方法吧, if(e.getStateChange()==ItemEvent.SELECTED){ //在这里set下 colorHighlight=JColorChooser.showDialog(settingFrame, "Choose te……
谢谢。 首先我觉得Java应该把它设计成点击之后就显示选中,就像不添加Listener时那样。但为什么只是添加了一个Listener后就不会显示选中了呢? 然后我试过setSelected()方法,但这样又会重新触发一次这个Listener。。。 我也试过判断jcbHighlight.isSelected(),但这样也不行,会一直触发Listener
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2013-02-02 05:21
社区公告
暂无公告