我需要在组合框中输入组织的简称。问题是我可以在下拉列表中看到组织名称,但实际上无法选择它。我的错误在哪里?

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));


提前致谢!

最佳答案

我怀疑这是您的setSelectedItem()方法使用==而不是.equals()比较对象

考虑使用已经实现有用方法的DefaultComboBoxModel

编辑:
同样,根据文档,当调用setSelected时,您应该调用所有已注册的ListDataListener对象。

使用DefaultComboBoxModel非常简单。创建一个新的DefaultComboBoxModel,添加要包含的元素,然后调用getSelectedItem()检索当前选定的元素。

09-05 02:28