2013-12-14 3 views
1

Я делаю JComboBox в JTable в Java Swing, которые имеют два элемента.Как выбрать элементы из JCombobox

Когда я нажимаю на поле со стрелками ActionEvent, а мой ActionListener будет уведомлен.

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

comboBox.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      String school_id = null; 
      JComboBox comboBox = (JComboBox) e.getSource(); 
      String access_value = comboBox.getSelectedItem().toString(); 
      final int selectedRowIndex = table.getSelectedRow(); 
      System.out.println("selected row: " + selectedRowIndex); 
      if(selectedRowIndex == -1) { 
       System.out.println("returned value"); 
       return; 
      } else { 
       school_id = (String) table.getModel().getValueAt(selectedRowIndex, 2); 
      } 
      if(adminDaoImpObj.updateSchoolAccount(school_id, access_value) > 0) { 
       //System.out.println("updated success"); 
      } else { 
       System.out.println("fail"); 
      } 
      System.out.println(school_id + "--------"); 
     } 
    }); 

Когда я нажимаю на поле со списком, он показывает выбранный ранее school_id значение.

После выбора элемента в поле со списком, он показывает в настоящее время выбранной строки school_id значение,

, но я хочу, чтобы показать только выбранный school_id значения.

Любая помощь приветствуется.

+0

Я думаю, вам нужно использовать другой тип прослушивателя. – Diversity

+0

Вы должны использовать ItemChangeListener: Посмотрите здесь: http://stackoverflow.com/questions/58939/jcombobox-selection-change-listener – Diversity

+1

Опубликовать [SSCCE] (http://sscce.org), который показывает вашу проблему , –

ответ

2

Попробуйте вместо этого использовать ItemListener. Возможно, это приведет к вашему предпочитаемому поведению.

Вы должны создать новый ActionListemer для каждого выпадающего списка во вновь созданной строке и назначить его связанным со списком.

Mayby u назначает всегда тот же ActionListener для combobixes для каждой строки, что не имеет смысла. Это может быть проблемой.

+0

спасибо за ваш ответ. Я использовал это, но он дал тот же результат. –

+0

PLS скажите мне, если я ошибаюсь, но вы просто хотите увидеть идентификатор школы выбранной строки таблицы внутри вас combobox или вы хотите, чтобы запись строки изменялась при изменении выбора группы combobox, – Diversity

+0

Я хочу изменить свое выделенное значение combobox в базе данных в соответствии с соответствующей school_id, но когда я нажимаю на combobox, тогда срабатывает экстренный прослушиватель, у которого есть предыдущий выбранный school_id, но я хочу, чтобы в настоящее время он имеет строку school_id. –

Смежные вопросы