首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选中jCheckBox1,取消选中jCheckBox2

选中jCheckBox1,取消选中jCheckBox2
EN

Stack Overflow用户
提问于 2016-08-04 15:22:08
回答 2查看 175关注 0票数 0

我在表单上放置了两个复选框。如果用户设置check on checkbox1则取消选中checkbox2,反之亦然。

代码语言:javascript
复制
chRISING0 = new JCheckBox("RISING");
    chRISING0.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent e) {
                chFR0.setSelected(false);
        }
    });
    chRISING0.setFont(new Font("Tahoma", Font.PLAIN, 9));
    chRISING0.setBounds(42, 15, 84, 23);
    pnlOUT1.add(chRISING0);


chFR0 = new JCheckBox(fpp.loadLanguage("chFR0"));
    chFR0.setFont(new Font("Tahoma", Font.PLAIN, 9));
    chFR0.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {               
            chRISING0.setSelected(false);
        }
    });
    chFR0.setBounds(42, 35, 67, 23);
    pnlOUT1.add(chFR0);

当我选中chRISING0并在chFR0上移动鼠标时,出现了奇怪的问题。即使我没有按下chFR0,chRISING0也会取消检查。为什么?我哪里做错了?

EN

回答 2

Stack Overflow用户

发布于 2016-08-04 15:48:44

如果你使用ButtonGroup,这会更容易。详情请参见How to Use the ButtonGroup Component

票数 5
EN

Stack Overflow用户

发布于 2016-08-04 15:32:53

更新:

我在前面的回答中混淆了两个监听器(我有一段时间没有编写swing代码)。您必须使用ItemListener,因为它负责打开/关闭更改。

代码语言:javascript
复制
chRISING0.addItemListener(new ItemListener() {
    public void itemStateChanged(ChangeEvent e) {
            chFR0.setSelected(false);
    }
});
chFR0.addItemListener(new ItemListener() {
    public void itemStateChanged(ChangeEvent e) {               
        chRISING0.setSelected(false);
    }
});

已弃用:

代码语言:javascript
复制
chRISING0.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
            chFR0.setSelected(false);
    }
});

您正在使用ItemListener。尝试像使用第二个CheckBox一样使用ChangeListener。

代码语言:javascript
复制
chRISING0.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
            chFR0.setSelected(false);
    }
});
chFR0.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {               
        chRISING0.setSelected(false);
    }
});

与ChangeListener不同,ItemListener对组件状态更改(将鼠标悬停在组件上或单击时的状态更改)做出反应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38760909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档