Обновить JList в JFrame
У меня есть JList, который отображает информацию из вектора. Затем пользователь может добавлять и удалять информацию из этого вектора. Возможно ли обновить JList внутри моего JFrame, когда элементы добавляются/удаляются из вектора? В настоящее время я занимаюсь.
list = new JList(names);
jframe.add(new JScrollPane(list), BorderLayout.CENTER);
но это не обновляет JList ни к чему новому. Я проверяю, содержимое моего вектора и т.д. Меняются, но список не освежает. Зачем? как я могу это исправить?
Ответы
Ответ 1
Вы не должны обновлять Вектор. Изменения должны быть сделаны непосредственно в ListModel, тогда таблица будет перекрашиваться автоматически.
Если вы решите воссоздать ListModel из-за изменений в векторе, то вы обновите список, выполнив:
list.setModel( theNewModel );
Редактировать: забыть вектор и загрузить данные непосредственно в DefaultListModel:
DefaultListModel model = new DefaultListModel();
model.addElement( "one" );
model.addElement( "two" );
JList list = new JList( model );
Теперь, когда вам нужно изменить данные, вы обновляете модель напрямую, используя методы addElement(), removeElement() или set(). Список будет автоматически перекрашен.
Ответ 2
Я думаю, что нашел решение для графического обновления "Jlist". Попробуйте вызвать этот метод после каждого добавления или удаления элемента модели, который хранится в Jlist.
Jlist_name.ensureIndexIsVisible(model_name.getSize());
Ответ 3
Вызовите updateUI в Jlist после изменения вектора.
Ответ 4
Вы можете использовать list.setListData(vector) каждый раз, когда вектор изменяется