Java Swing: реализация моей Comboboxmodel для JComboBox - PullRequest
0 голосов
/ 24 ноября 2011

Мне нужно, чтобы в поле со списком были короткие названия организаций.Проблема в том, что я могу увидеть названия организаций в выпадающем списке, но не может фактически выбрать его.Где моя ошибка?

public class ToComboBoxModel extends AbstractListModel implements ComboBoxModel {
      private String selectedItem;

      private List<Organization> orgs;

      public ToComboBoxModel(List orgs) {
        this.orgs = orgs;
      }

        @Override
      public String getSelectedItem() {

        return selectedItem;
      }

        @Override
      public void setSelectedItem(Object newValue) {
            for (Organization o: orgs){
                if (newValue==o){
                    selectedItem=o.getShortName();
                    break;
                }
            }
      }

        @Override
      public int getSize() {
        return orgs.size();
      }

        @Override
      public String getElementAt(int i) {
        return orgs.get(i).getShortName();
      }
    }

Настройка модели:

query =session.createQuery("from Organization where isMain = 0");
List orgs=query.list();
toComboBox.setModel(new ToComboBoxModel(orgs));

Заранее спасибо!

1 Ответ

5 голосов
/ 24 ноября 2011

Я подозреваю, что ваш setSelectedItem() метод сравнивает объекты, используя ==, а не .equals()

Рассмотрите возможность использования DefaultComboBoxModel , которая уже реализует полезные методы.

Редактировать : Также в соответствии с Документами вы должны вызывать все зарегистрированные ListDataListener объекты при вызове setSelected.

Использование DefaultComboBoxModel довольно просто.Вы создаете новый DefaultComboBoxModel, добавляете элементы, которые хотите, чтобы он содержал, затем вызываете getSelectedItem(), чтобы получить элемент, который выбран в данный момент.

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