Подтвердить что ты не робот

Обновить JList в JFrame

У меня есть JList, который отображает информацию из вектора. Затем пользователь может добавлять и удалять информацию из этого вектора. Возможно ли обновить JList внутри моего JFrame, когда элементы добавляются/удаляются из вектора? В настоящее время я занимаюсь.

 list = new JList(names);
 jframe.add(new JScrollPane(list), BorderLayout.CENTER);

но это не обновляет JList ни к чему новому. Я проверяю, содержимое моего вектора и т.д. Меняются, но список не освежает. Зачем? как я могу это исправить?

4b9b3361

Ответ 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) каждый раз, когда вектор изменяется