активировать и деактивировать ComboBox - PullRequest
2 голосов
/ 31 марта 2010

Как я могу сделать comboBox доступным, когда флажок снят (наоборот)

Почему comboBox все еще отключен после того, как я снял флажок checkBox?

choice [] = {"A","B","C"};
JComboBox a = new JComboBox(choice);

JCheckBox chk = new JCheckBox("choice");

...
a.addActionListener(this);
chk.addActionListener(this);
...

public void actionPerformed(ActionEvent e) {

   //disable the a comboBox when the checkBox chk was checked
  if(e.getSource()==chk)
    a.setEnabled(false);

  //enable the a comboBox when the checkBox chk was unchecked
  else if(e.getSource()!=chk)
    a.setEnabled(true);
}

Ответы [ 4 ]

4 голосов
/ 31 марта 2010

Если я вас правильно понимаю, я думаю, что все, что вам нужно сделать, это изменить включенное состояние поля со списком на основе текущего значения флажка:

public void actionPerformed(ActionEvent e) {
    if (e.getSource()==chk) {
        a.setEnabled(chk.isSelected());
    } 
}
2 голосов
/ 27 июля 2012

У меня есть похожая настройка, и я использую Item Listener, например:

CheckBox.addItemListener(new ItemListener() {
    public void itemStateChanged(ItemEvent e) {
        if(e.getStateChange()==ItemEvent.SELECTED){
            ComboBox.setEnabled(true);
        }else if(e.getStateChange()==ItemEvent.DESELECTED){
            ComboBox.setSelectedIndex(-1);
            ComboBox.setEnabled(false);
        }
    }
});

Таким образом, поведение выбирается и отменяется.

0 голосов
/ 12 декабря 2016
if (e.getSource() == chckbxModificar) {
        if (chckbxModificar.isSelected()) {
            cbxImpuesto.setEnabled(true);
            cbxMoneda.setEnabled(true);
            txtPorcentaje.setEditable(true);
            txtSimbolo.setEditable(true);

        } else {
            cbxImpuesto.setEnabled(false);
            cbxMoneda.setEnabled(false);
            txtPorcentaje.setEditable(false);
            txtSimbolo.setEditable(false);
        }
    }
0 голосов
/ 31 марта 2010

Я попробовал это и работал ..

public class JF extends JFrame implements ActionListener {
 String choice [] = {"A","B","C"};
 JComboBox a = new JComboBox(choice);

 JCheckBox chk = new JCheckBox("choice");

 JF()
 {
  this.add(a, BorderLayout.NORTH);
  this.add(chk, BorderLayout.CENTER);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  a.addActionListener(this);
  chk.addActionListener(this);
 }

 public void actionPerformed(ActionEvent e) {

    //NOTE THE FOLLOWING LINE!!!!
   if(e.getSource()==chk)
     a.setEnabled(chk.isSelected());
 }
 public static void main(String[] args) {
  new JF().setVisible(true);
 }
}

Ваш старый код не работал, потому что даже снятие флажка вызывает событие. Источником триггера является флажок .. поэтому как при проверке, так и при снятии отметки источник события был chk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...