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;
}
}
});
...全文
414 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧