2016-08-04 11 views
0

フォームに2つのチェックボックスがあります。ユーザーがチェックボックス1をオンにした場合、チェックボックス2をオフにします。jCheckBox1をチェックし、jCheckBox2のチェックを外します

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

chFRIS0でchRISING0を確認してマウスを動かすと、奇妙な問題が発生します。私がchFR0を押さなかったとしても、chRISING0よりもチェックが外れています。 なぜですか?私は間違っているの?

+1

チェックボックスの代わりにラジオボタンを使用してみませんか? – Pirate

+0

残念ながら、要件はチェックボックスです:( – Josef

答えて

0

UPDATE:

私は(私はしばらくの間、スイングをコーディングしていなかった)私の以前の回答で2人のリスナーを混乱。 ItemListenerは、オン/オフの変更を行うため、使用する必要があります。

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

非推奨:

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

をあなたがのItemListenerを使用しています。 2番目のCheckBoxで行ったようにChangeListenerを使用してみてください。

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はのChangeListenerとは異なり、コンポーネントの状態変化(あなたがコンポーネント上にマウスを置くか、それをクリックして状態の変化)に反応します。

関連する問題