【发布时间】:2017-10-19 10:55:35
【问题描述】:
我对 Java 比较陌生,所以请记住这一点...
我有一个swing GUI,其中包含一个JComboBox。
我希望用户选择ArrayList<Person> 中的一个选项。
请注意,我也可以使用数组。
我以前用过 JComboBox,但只用过字符串。
Person 类有一个 toString() 方法,我想用它来获取应该代表 JComboBox 中的对象的文本。
稍后推送 JButton 时,应将选中的 Person 对象(同一个)添加到另一个 ArrayList 中以进行进一步操作。
我想让按钮做这样的事情:
Person selectedPerson = (Person) myComboBox.getselectedItem();
但是,我需要以某种方式将这些 Person 对象放入该事物中。 我尝试使用:
myComboBox.setModel(new DefaultComboBoxModel<>(aListOfStuff);
我什至尝试制作自己的模型:
public class DropDownModel extends DefaultComboBoxModel<Person> implementsMutableComboBoxModel<Person>
但是 setModel 方法不需要这些。
我在 Stackoverflow 上看到过其他类似的问题,但没有一个回答我的问题。我还注意到有人提到了渲染器类或类似的东西。
再次:
我希望 ArrayList 可以在 JComboBox 中选择其 Person 对象,以便我可以使用 Person tempPerson = (Person) myComboBox.getSelectedObject(); 访问选定的对象。
我必须自己制作模型类吗?
我开始在 JList 中显示它们。使用自定义模型:
public class ListBoxModel extends AbstractListModel<Person> implements Iterable<Person>
我需要类似的东西吗?
这可能吗?
一些例子:
myComboBox.setModel(new DefaultComboBoxModel<>(s.getPersonListAsArray()));
cbRemoveClass.setModel(new DefaultComboBoxModel<>(t.getClasses().toArray(new String[t.getClasses().size()])));
someOtherComboBox.setModel(new DropDownModel(dlModel.getList())); // trying to use my custom model
【问题讨论】:
-
鉴于
DefaultComboBoxModelconstructors 接受a)没有参数b)一个数组(即[])或c)一个Vector- 你为什么要尝试使用ArrayList构造一个? “但是 setModel 方法不需要这些。” 总是复制/粘贴错误和异常输出!听起来好像您正在尝试“魔术编程”,但这永远行不通。尝试理解编译器或运行时提供的消息。查看 API 文档以了解所使用的方法和构造函数。 -
@AndrewThompson 对不起,我忘了提。我已经进行了编辑。感谢您的评论。我没有得到异常,它不会编译(就像我预期的那样)。不过,谢谢您的评论。
-
“我所有的代码都在 GutHub 上” 很少有人会关注外部链接,很少有人会在完整的代码库中寻找问题。将minimal reproducible example 此处 作为edit 发布到问题中。编辑不包括复制/粘贴的编译器错误消息。