繁体   English   中英

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

[英]JComboBoxes - Using setModel to access Objects (in Swing)

快速背景,我正在使用Netbeans进行开发(我在Swing方面没有太多经验,并且失去了获得经验的机会,因此无法获得开发速度)。 在Netbeans中,明显的限制是您可以修改哪些代码以阻止新手破坏代码(我已经很有趣地完成过一次代码),无论如何,我有一类Object,这些Object具有name属性。 在应用程序中,我直接初始化了这些对象的数组,并将它们称为“事物”。

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

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

任何建议或什至指示,以帮助我认为这将不胜感激。

首先,DefaultComboBoxModel的构造函数可以采用一个数组,但是属性名称不存在于数组中,因此您不能这样做。 您必须修改对象或组合框以显示对象的正确属性。

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

您有几种选择:)

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

是否不只是在对象上实现toString()以返回其.name属性即可与默认的组合框模型一起工作?

看到类似的问题: Java Swing:扩展DefaultComboBoxModel和重写方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM