在GUI中的ArrayList中列出对象,并在许多ArrayLists之间交替

时间:2014-04-24 23:15:46

标签: java swing arraylist jframe jlist

我目前正在处理一个个人项目,在这个项目中,要求用户创建3个不同类别的对象,因此在创建对象后,有一个检查方法。对象的类别,然后将其添加到ArrayList。 更多细节:该物体被称为车辆,有三类:两个轮子,三个轮子,三个轮子。因此,当您创建新车辆时,系统会要求您指定您正在创建的车辆类型,比如您说两个车轮,将调用一个方法将对象添加到ArrayList twoWheelList中,以及等等。

我目前有两个问题,我正在为这个程序制作一个GUI,我希望显示存储在ArrayLists中的信息,基本上用户有一个comboBox,其名称为它下面的三个类别。我喜欢当用户选择让我们说'#34; Two Wheels"时,jList将列出ArrayList中的每个对象twoWheelList

我怎样才能做到这一点?我曾多次尝试过,但我没有运气。我使用NetBeans,我真的不了解整个JFrame概念以及如何编写源代码,因为我需要程序知道用户选择的第一个问题应该是什么我只是使用IF语句? 如何使对象的ArrayList显示在jList?

1 个答案:

答案 0 :(得分:1)

首先向ItemListener添加JComboBox。在itemStateChanged事件中,您需要监控ItemEventSELECTED州。

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 BoxesHow to Use Lists了解详情。密切关注有关自定义渲染的讨论。