java JOptionPane.showMessageDialog问题,我定义一个JCheckBox,为什么选中会触发两次ItemListener事件?

如题,我调用的代码如下JCheckBoxcbisDir=newJCheckBox("是否直达");cbisDir.setBounds(newRectangle(290,1... 如题,我调用的代码如下
JCheckBox cbisDir =new JCheckBox("是否直达");

cbisDir.setBounds(new Rectangle(290,10,80,40));
cbisDir.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent arg0) {
System.out.println("item");
JOptionPane.showMessageDialog(MainFrame.this, "直达");
}
});
contentPanel.add(cbisDir);

如果我注释掉JOptionPane.showMessageDialog(MainFrame.this, "直达");这句就正确了。我猜想问题应该出现在MainFrame.this这里,但是不知道是不知道是为什么。
展开
 我来答
hxy850809
2012-08-29 · TA获得超过160个赞
知道小有建树答主
回答量:569
采纳率:0%
帮助的人:321万
展开全部
ItemEvent有多种状态,JCheckBox选中是一种状态,未选中是另一种状态。

JOptionPane.showMessageDialog显示的是模态对话框,就是这个模态特性,使事件执行了2次,这应该是Swing的BUG,你可以给Java官网提供BUG报告。
865517964
2012-08-26
知道答主
回答量:79
采纳率:0%
帮助的人:22.5万
展开全部
去看API说明,你点击一次调用itemStateChanged方法,监听器会认为你原来的那个也算是改变的,意思就是 原来的改变了 算一次,选取新的值也算一次。所以会有两次结果,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式