Check jCheckBox1, uncheck jCheckBox2

微笑、不失礼 提交于 2019-12-12 03:50:08

问题


I have two checkboxes placed on form. If user set check on checkbox1 than uncheck checkbox2 and vice versa.

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);

Strange problem happens when I check chRISING0 and move mouse on chFR0. Than chRISING0 unchecks even I didn't press on chFR0. Why? What I'm doing wrong?


回答1:


It would be easier if you used a ButtonGroup. See How to Use the ButtonGroup Component for details.




回答2:


UPDATE:

I confused two listeners in my previous answer (I didn't code the swing for a while). You must use ItemListener because it is responsible for an on/off changes.

chRISING0.addItemListener(new ItemListener() {
    public void itemStateChanged(ChangeEvent e) {
            chFR0.setSelected(false);
    }
});
chFR0.addItemListener(new ItemListener() {
    public void itemStateChanged(ChangeEvent e) {               
        chRISING0.setSelected(false);
    }
});

DEPRECATED:

chRISING0.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
            chFR0.setSelected(false);
    }
});

You're using ItemListener. Try using ChangeListener as you did with second CheckBox.

chRISING0.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {
            chFR0.setSelected(false);
    }
});
chFR0.addChangeListener(new ChangeListener() {
    public void stateChanged(ChangeEvent e) {               
        chRISING0.setSelected(false);
    }
});

ItemListener reacts to a components state change (state changes when you hover a mouse over the component or click on it) unlike ChangeListener.



来源:https://stackoverflow.com/questions/38760909/check-jcheckbox1-uncheck-jcheckbox2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!