Я хотел бы изменить содержимое списка JComboBox
(например, добавить другой список вместо старого). Есть ли способ, которым я мог бы это сделать? Заранее спасибо!
Изменение содержимого JComboBox
Ответы (5)
Если вы хотите иметь возможность добавлять и удалять элементы из существующего поля со списком во время выполнения, базовая модель данных для поля со списком должна быть MutableComboBoxModel.
Google для этого класса для информации об интерфейсе и для примеров того, как его использовать.
Обратите внимание: если вы хотите, чтобы пользователь вводил новые значения, вам также необходимо сделать поле редактируемым.
Несколько ссылок на примеры можно найти здесь.
Я нашел эту тему и придумал быстрое (и, вероятно, грязное) решение:
oldComboBox.setModel(new JComboBox<>(new_items).getModel());
Конечно вы можете. Существует несколько методов манипулирования JComboBox с использованием модели списка по умолчанию. Взгляните на методы удаления* и добавления*:
http://java.sun.com/javase/6/docs/api/javax/swing/JComboBox.html
x.removeAllItems(); x.addItem(obj1); x.addItem(obj2);
охватывает почти все ситуации, с которыми я обычно сталкиваюсь. И это ПОЦЕЛУЙ.
- person Pimp Trizkit; 03.03.2016
Вы также можете полностью заменить модель с помощью setModel().
Но после написания все большего количества пользовательских интерфейсов я считаю более полезным написать пользовательскую модель ComboBoxModel для переноса структуры данных, которую представляет ComboBox. Это более юнит-тестируемо и чище, ИМХО.
Библиотека Glazed Lists очень полезна, когда вы хотите подключить какой-либо изменяемый список к элементу управления с графическим интерфейсом. Это большая библиотека, которая может не подходить для вашего проекта, но взгляните на их скринкасты и оцените сами. Он поддерживает множество связанных вещей, таких как фильтрация и автозаполнение, и может сэкономить вам много ручной работы.