我目前正在处理一个个人项目,在这个项目中,要求用户创建3个不同类别的对象,因此在创建对象后,有一个检查方法。对象的类别,然后将其添加到ArrayList。 更多细节:该物体被称为车辆,有三类:两个轮子,三个轮子,三个轮子。因此,当您创建新车辆时,系统会要求您指定您正在创建的车辆类型,比如您说两个车轮,将调用一个方法将对象添加到ArrayList twoWheelList中,以及等等。
我目前有两个问题,我正在为这个程序制作一个GUI,我希望显示存储在ArrayLists中的信息,基本上用户有一个comboBox,其名称为它下面的三个类别。我喜欢当用户选择让我们说'#34; Two Wheels"时,jList将列出ArrayList中的每个对象twoWheelList
我怎样才能做到这一点?我曾多次尝试过,但我没有运气。我使用NetBeans,我真的不了解整个JFrame概念以及如何编写源代码,因为我需要程序知道用户选择的第一个问题应该是什么我只是使用IF语句? 如何使对象的ArrayList显示在jList?
中答案 0 :(得分:1)
首先向ItemListener
添加JComboBox
。在itemStateChanged
事件中,您需要监控ItemEvent
或SELECTED
州。
从JComboBox
获取所选值。这可能要求您提供某种外观,可以将组合框中的项与ArrayList
相关联,或者,如我所希望的,包含项目名称的包装类ArrayList
包装成单个对象,这将提供获取ArrayList
然后使用自定义ListModel
,您可以将ArrayList
包装在其中并将其应用到屏幕上的JList
...
public class ProxyListModel extends AbstractListModel<Vehicle> {
private List<Vehicle> vehicles;
public ProxyListModel(List<Vehicle> vehicles) {
// It might be better to simply make a copy of the list
// but that's up to you...
this.vehicles = vehicles;
}
@Override
public int getSize() {
return vehicles.size();
}
@Override
public Vehicle getElementAt(int index) {
return vehicles.get(index);
}
}
查看How to Use Combo Boxes和How to Use Lists了解详情。密切关注有关自定义渲染的讨论。