0

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?

Josef
  • 2,648
  • 5
  • 37
  • 73

2 Answers2

5

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

Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
whyn0t
  • 301
  • 2
  • 14
0

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.

GV_FiQst
  • 1,487
  • 14
  • 30