当前位置: 首页 > 面试题库 >

Java Swing:为JComboBox实现我的ComboboxModel

皇甫鸿远
2023-03-14
问题内容

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

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。

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

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



 类似资料:
  • 在我的swing应用程序中有两个组合框--在下面的代码中,您将看到Spring的元素,因为我也在使用Spring。我不能删除spring,否则应用程序将停止工作,没有大量的重构工作来取代spring的位置,所以请不要问这个。在应用程序的默认启动时,当进入带有组合框的对话框时,它们应该不会显示任何选择,如果您单击该框打开以显示选项,则只有一个选项(“Add...”)。 问题是单击“Add...”后,

  • 好吧,这很难解释,但我会尽力的。 我在JTable中有一个JTextField和一个JComboBox,它的getCellEditor方法被覆盖如下: 以下是行为差异(请注意,从现在开始,当我说JTextField或JComboBox时,我指的是JTable中包含任一组件的单元格): > 当我使用tab键或箭头键导航到JTextField,然后开始键入时,我键入的字符会自动输入单元格。然而,当我以

  • 包装问题; 导入java.util.List;导入java.util.LinkedList; 公共类SinglyListSize{int size=0; }

  • 问题内容: 是否可以在JComboBox中定义与实际内容不同的值? 在HTML中,其外观如下: 无论内容多长时间,都可以在此处获得一个短值。 在Java中,我只知道以下解决方案: 但是在这里,我只会得到“ Cat”,“ Dog”等信息 。问题是,我要将客户的所有名称从数据库加载到JComboBox中,然后从所选客户中检索ID。它看起来应该像这样: 问题答案: 如果创建Customer类并将Cust

  • 我试图从文本文件中提取某些单词,并将它们显示在JComboBox中。我试图使用SplitString()方法,但它似乎不起作用。 目前文本文件是这样的。 课程代码-课程描述-考官-主持人 我试图分裂它,所以JComboBox只会显示: 课程代码-课程描述 这是我正在使用的代码(请原谅混乱和缺乏最佳实践,我是新手,正在努力学习)。 如果您不想深入研究上述混乱情况,使用split方法的代码是: 组合框

  • 问题内容: 您好,我有以下代码来查看JComboBox中的项目是否是一个类的实例(Persoon)。 item的输出是persoon.name变量的值。所以JComboBox中的项目实际上是字符串。 这就是设置JComboBox列表的方式。 我的问题是..我如何检查这个Persoon对象是否存在并且与JComboBox中的对象相同? 问题答案: 您应该添加到的,当你打电话的对象,不只是名字,所以这