在列表中为JComboBox创建对象

时间:2017-12-05 15:46:34

标签: java swing

我有一个由多个类实现的接口。我想创建一个JComboBox,其中所有类都使用对象本身作为项目。

这就是我现在使用每行的一行:

JComboBox<Vehicle> box = new JComboBox<>();
box.addItem(new Car());
box.addItem(new Truck());
box.addItem(new Plane());
// could be 5 more lines of object instantiation and adding

当您在JComboBox上调用getSelectedItem()时,它将返回该对象,该对象将被添加到接口类型列表中。有没有办法通过循环遍历类列表而不是显式实例化每个对象?

1 个答案:

答案 0 :(得分:1)

  

有没有办法通过循环遍历类列表而不是显式实例化每个对象?

不确定这是什么意思?你仍然需要:

  1. 创建列表
  2. 将类添加到List
  3. 遍历List,创建每个类的实例,然后将该对象添加到组合框中。
  4. 这不会保存任何代码并使过程更加复杂。

    在任何情况下,回答基本问题是,您可以使用以下代码创建类的实例:

    Class aClass = Car.class;
    Car car = aClass.newInstance();
    

    因此,您可以使用以下内容创建List:

    List<Class> items = new ArrayList<Class>();
    items.add( Car.class );
    items.add( Truck.class );
    

    然后根据需要迭代List。