2013-05-20 45 views
1

即時嘗試切換我的jcheckbox。我已經設置了默認值來檢查jcb2。我的jcb1工作正常,但我的jcb2似乎無法切換。我添加了一個println,發現它被打印出來,但是我的jcb2沒有得到檢查。切換JCheckBox值

class CheckBoxHandler implements ItemListener 
{ 
    public void itemStateChanged(ItemEvent e) 
    { 

     if(jcb1.isSelected()) 
     { 
      jcb1.setSelected(true); 
      jcb2.setSelected(false); 
     } 
     if(jcb2.isSelected()) 
     { 
      jcb1.setSelected(false); 
      jcb2.setSelected(true); 
      System.out.println("1"); 
     } 
    } 
}  
+0

這是因爲兩者都被選中並且您的第一個'if'語句取消選中第二個複選框嗎? – Aurand

+0

只有1個複選框會隨時被選中。選中第一個複選框後,我無法檢查第二個複選框,除非我取消選中第一個複選框。只有當我這樣做時纔會打印值1。 – Wayne

回答

4

如果第一個複選框被選中,它們都會在您選擇第二個複選框的那一刻被選中。這意味着將滿足第一個if條件,這樣第二個複選框將被立即取消選擇。

因此,您應該使用ItemEvent e來查看剛剛選擇了哪個複選框,而不是檢查選中哪個複選框。

if(e.getStateChange() == ItemEvent.SELECTED) { 
    if(e.getItem() == jcb1) { 
     jcb2.setSelected(false); 
    } else { 
     jcb1.setSelected(false); 
    } 
} 
+0

非常感謝。這解決了我的問題。 – Wayne