1

我知道这可能是基于意见的,但它可以回答后续问题:

Vector 对任何 Collection 都有一个构造函数,那么为什么 JComboBox 和相关的类只使用 Vector 呢?可以继承 DefaultComboBoxModel 以利用更广泛的初始化类型吗?

private class MyComboBoxModel<E> extends DefaultComboBoxModel<E> {
    private MyComboBoxModel (Collection<E> input) {
        super(new Vector<E>(input));
    }
} 

还是我应该在调用构造函数之前只使用 DefaultComboBoxModel 并创建一个向量?

Vector<Contact> vectorList = new Vector<Contact>(getList());
DefaultComboBoxModel<Contact> myModel = new DefaultComboBoxModel<Contact>(vectorList);
4

1 回答 1

2

看起来将来会添加集合的功能。来自 ListModel,ComboBoxModel 的超接口:

此类松散地实现了 java.util.Vector API,因为它实现了 1.1.x 版本的 java.util.Vector,不支持集合类,并在发生更改时通知 ListDataListener。目前它委托给一个 Vector,在未来的版本中它将是一个真正的 Collection 实现。

http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html

于 2013-10-10T11:18:22.267 回答