Включение «помощники» конструкторы было предназначено, чтобы сделать его проще использовать JList
с простыми структурами данных.
JList
(и многие компоненты Swing) на самом деле предназначены для использования с моделями, которые предоставляют фактические данные для просмотра.
Оригинальный дизайн идет назад, прежде чем Swing был включен в основную библиотеку (до JDK 1.3) и непосредственно перед введением API коллекций, поэтому вполне вероятно, что у исходных разработчиков не было List
, доступных им (отсюда включение Vector
).
Вполне вероятно, что никто не счел нужным обновить библиотеки, так как (частично потому, что это, возможно, было принято решение о том, что оригинальные конструкторы не должны были быть включены, но я не был на этом заседании;))
Лучше или проще было бы создать вашу собственную модель, которая использует List
как источник данных.
Например ...
public class MyListModel<T> extends AbstractListModel<T> {
private List<T> people;
public MyListModel(List<T> people) {
this.people = people;
}
@Override
public int getSize() {
return people.size();
}
@Override
public T getElementAt(int index) {
return people.get(index);
}
}
Тогда вы можете просто поставить его на JList
когда-либо вам нужно ...
JList myList = new JList(new MyListModel<MyObject>(listOfMyObjets));
'" Что толку меня является то, что, почему я не могу просто добавьте ArrayList в Jlist прямо так: «' --- Потому что мы не можем просто составить код и надеяться, что он может работать. API расскажет вам, какие конструкторы и методы доступны. Чем больше вы его используете, тем более полезным он станет. –
Если вы действительно расстроены из-за этого, создайте «ListModel», который использует «Список», поскольку это основные данные поддержки ... – MadProgrammer
См. Также: http://stackoverflow.com/a/3269560/363573 – Stephan