JComboBoxes - 使用setModel访问对象(在Swing中)

时间:2010-10-13 17:58:30

标签: java user-interface swing jcombobox

快速背景,我正在使用Netbeans来开发这个(我没有太多的Swing经验,并且在获得开发速度的机会上失去了经验值)。 在Netbeans中,显然限制了你可以修改哪些代码来阻止新手用户破解代码(我已经有趣地做了一次) 无论如何,我有一类对象,这些对象有一个名称属性。在应用程序中,我直接初始化了这些对象的数组,并将它们称为“事物”;

Objects[] things = new Objects[2];
things[0] = new Objects("The first thing");
things[1] = new Objects("The second thing");

内容和名称是故意愚蠢的,因为这是一个让它工作的测试(而不是分开一部分书面程序)。 经过一些研究和阅读后,我发现我“应该”能够使用以下代码将对象加载到setModel参数中;

    new javax.swing.DefaultComboBoxModel(things[].name)
//The above is the code to use within setModel, the below is the completed example
    jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(things[].name));

这没有奏效,尽管我最努力去谷歌这似乎太具体了,无法确定一个体面的答案。最终的结果是我想拥有; 下拉列表中显示“第一件事”和“第二件事”,然后显然我可以在真实程序中通过引用屏幕上该对象中保存的任何其他数据来扩展它。

任何建议或甚至指示可以帮助我思考这一点。

2 个答案:

答案 0 :(得分:6)

首先,DefaultComboBoxModel的构造函数可以采用数组,但是数组中不存在属性名称,因此您无法执行此操作。您必须修改对象或组合框以显示对象的正确属性。

jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(things[]));

您有几种选择:)

  1. 快速轻松地覆盖toString以返回名称(假设Objects是您的类)
  2. 创建一个包装类(ObjectsWrapper),在其toString()方法中返回对象名称
  3. 以某种方式修改JComboBox,模型或渲染器以显示所需的属性

答案 1 :(得分:1)

不只是在您的对象上实现toString()以使用默认的组合框模型返回其.name属性吗?

查看类似的问题:Java Swing: Extend DefaultComboBoxModel and override methods