Я хочу привязать JList в JScrollPane к массиву, всякий раз, когда массив изменяет список изменений.
Привязка Swing JList к массиву
Ответы (1)
Первой идеей, конечно, было бы использовать один из конструкторов 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)
, сравните Java SE API.
Однако здесь поддержка Java SE прерывается. Не существует реализации ListModel
, которая "поддерживается списком".
Я пробовал оба способа преодолеть это:
- реализовать интерфейс
List
в классе, синхронно обновляя базовыйDefaultListModel
- расширить
DefaultListModel
, синхронно обновив базовый экземплярList
.
Ни один из способов не работал.
Поэтому рискну сказать, что Java SE пока не поддерживает эту функцию. Вы должны написать свою собственную реализацию JList
, синхронизированную экземпляром List
, или подождать, пока не появится новый дистрибутив Java, в котором JList's
или DefaultListModel's
поддерживаются List
экземплярами.
", you want your queue(
JList` вJScrollPane
?), чтобы добавить элемент, иJTextField
будет обновляться, чтобы отображать размер очереди? - person mre   schedule 19.05.2011Something[]
) не прослушиваются в Java. Я бы посоветовал вам использовать реализациюList<Something>
. Вам обязательно стоит взглянуть на библиотеку с открытым исходным кодом GlazedLists. - person jfpoilpret   schedule 19.05.2011