Изменение содержимого JComboBox

Я хотел бы изменить содержимое списка JComboBox (например, добавить еще один список вместо более старого). Могу ли я это сделать? Спасибо заранее!

Ответы

Ответ 1

Если вы хотите иметь возможность добавлять и удалять элементы из существующего поля со списком во время выполнения, базовая модель данных для поля со списком должна быть MutableComboBoxModel

Google для этого класса для информации о интерфейсе и для примеров того, как его использовать.

Обратите внимание, что если вы хотите, чтобы пользователь вводил новые значения, вам также необходимо сделать окно редактируемым.

Вы можете найти некоторые ссылки на примеры здесь.

Ответ 2

Я нашел эту нить и придумал быстрое (и, вероятно, грязное) решение:

oldComboBox.setModel(new JComboBox<>(new_items).getModel());

Ответ 3

Конечно, вы можете. Существует несколько способов манипулирования JComboBoxes с использованием модели списка по умолчанию. Посмотрите методы remove * и добавьте * методы:

http://java.sun.com/javase/6/docs/api/javax/swing/JComboBox.html

Ответ 4

Вы также можете полностью заменить модель setModel().

Но после написания все большего числа пользовательских интерфейсов, я считаю более полезным написать настраиваемый ComboBoxModel, чтобы обернуть структуру данных, представляемую ComboBox. Это более проверяемое и чистое устройство, ИМХО.

Ответ 5

Библиотека Glazed Lists может оказаться полезной, если вы хотите подключить какой-либо измененный список к элементу управления графическим интерфейсом. Это библиотека большого размера, которая может не подходить для вашего проекта, но взгляните на их скринкасты и судите сами. Он поддерживает множество связанных вещей, таких как фильтрация и автозаполнение, и может сэкономить вам много ручной работы.