2016-08-04 26 views
0

我有兩個複選框放在窗體上。如果用戶選中checkbox1,則取消選中checkbox2,反之亦然。檢查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); 

當我檢查chRISING0並在chFR0上移動鼠標時發生奇怪的問題。即使我沒有按chFR0,chRISING0也會取消選中。 爲什麼?我做錯了什麼?

+1

爲什麼不使用單選按鈕而不使用複選框? – Pirate

+0

不幸的是,需求是複選框:( – Josef

回答

0

UPDATE:

我在前面的回答弄得兩個監聽器(我沒有編寫了一會兒擺動)。您必須使用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。像使用第二個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。

相關問題