Как изменить выбранное значение JComboBox - PullRequest
1 голос
/ 26 января 2010

У меня есть два комбинированных списка, в зависимости от выбора, сделанного в первом комбинированном окне, выбранное значение второго поля должно измениться. Пожалуйста, найдите фрагмент кода ниже:

secondcombobox.setSelectedItem(firstcombobox.getSelectedItem());

Ответы [ 4 ]

2 голосов
/ 26 января 2010

Вы должны использовать ActionListener :

firstcombobox.addActionListener(new ActionListener(){

   void actionPerformed(ActionEvent e){
       // sets the selected item of secondcombobox to be the value of firstcombobox
       // assuming secondcombobox contains such a value.
       secondcombobox.setSelectedItem(firstcombobox.getSelecteditem());
    }

});

Обратите внимание, что здесь важна область видимости. Вы можете сделать firstcombobox и secondcombobox глобальными или финальными, или вы можете использовать слегка альтернативную форму, где вы берете эти аргументы в качестве входных данных для конструктора:

firstcombobox.addActionListener(new ActionListener(firstcombobox, secondcombobox){
   private JComboBox a;
   private JComboBox b;

   public ActionListner(JComboBox a, JComboBox b){
       this.a = a;
       this.b = b;
   }

   void actionPerformed(ActionEvent e){
       // sets the selected item of a to be the value of b
       // assuming a contains such a value.
       b.setSelectedItem(a.getSelecteditem());
    }

});
1 голос
/ 27 января 2010

Если ваши два комбинированных списка имеют одинаковые значения, вы должны использовать одну и ту же модель для них обоих. Это было бы чище, чем использовать ActionListener.

DefaultComboBoxModel model = new DefaultComboBoxModel();
combo1.setModel(model);
combo2.setModel(model);

//init your values in the combo here

Затем, когда вы выбираете элемент в одном из комбинированных списков, он будет выбран в другом.

1 голос
/ 26 января 2010

Ваш код выше будет работать, только если выбранный элемент в первом JComboBox также существует во втором JComboBox; Другими словами, существует объект, во втором ComboBoxModel возвращает true по сравнению с выбранным элементом из первого JComboBox.

Если выбранного элемента нет в списке, вызов метода не будет иметь эффекта , что, как подозревается, происходит в вашем случае.

0 голосов
/ 26 января 2010

Хотя ваша минимальная длина вопроса делает ваш вопрос загадочным, вам, вероятно, понадобится:

firstcombobox.addActionListener() {
 // Do something with secondcombobox
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...