Конечно, первая идея состоит в том, чтобы использовать один из конструкторов JList
и надеяться, что компонент JList
обновляется синхронно с массивом:
public JList(Object[] listData);
public JList(Vector<?> listData);
Очевидно, это не сработает. Только если вы используете третий конструктор не по умолчанию
public JList(ListModel model);
и использовать реализацию по умолчанию DefaultListModel
и обновлять ее элементы напрямую, например,
DefaultListModel model = new DefaultListModel();
...
model.setElementAt(value, 25);
вы получаете динамически обновляемый компонент JList
, обновляя DefaultListModel
.
Java SE предоставляет «список фиксированного размера, резервное копирование указанного массива» методом java.util.Arrays.asList(T... a)
, сравните API Java SE .
Однако здесь поддержка Java SE не работает. Не существует реализации ListModel
, которая "поддерживается списком".
Я пробовал оба способа преодолеть это:
- реализовать интерфейс
List
в классе, синхронно обновляющем
базовый DefaultListModel
- extension
DefaultListModel
, синхронно обновляя базовый List
экземпляр.
Ни один из способов не работал.
Поэтому я рискну сказать, что Java SE пока не поддерживает эту функцию . Вы должны написать собственную реализацию JList
, синхронизированную с экземпляром List
, или подождать, пока не появится новый дистрибутив Java, в котором есть JList's
или DefaultListModel's
, резервное копирование которого List
экземпляров.