как использовать JComboBox, используя Enum в диалоговом окне - PullRequest
7 голосов
/ 26 апреля 2010

Я определяю перечисления:

enum itemType {First, Second, Third};

Публичный класс Item

{

private itemType enmItemType;

...

}

Как мне использовать его в диалоговом окне, используя JComboBox? Значит, внутри диалогового окна пользователь будет иметь поле со списком (Первый, Второй, Третий). Кроме того, лучше использовать какой-то идентификатор для каждого числителя? (Целое число)

спасибо.

Ответы [ 3 ]

21 голосов
/ 26 апреля 2010

Я использовал этот подход:

enum ItemType {
    First("First choice"), Second("Second choice"), Third("Final choice");
    private final String display;
    private ItemType(String s) {
        display = s;
    }
    @Override
    public String toString() {
        return display;
    }
}

JComboBox jComboBox = new JComboBox();
jComboBox.setModel(new DefaultComboBoxModel(ItemType.values()));

Переопределение метода toString позволяет предоставлять отображаемый текст, который предоставляет пользователю значимый выбор.

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

8 голосов
/ 26 апреля 2010
JComboBox combo = new JComboBox(itemType.values());
3 голосов
/ 26 апреля 2010

Предполагая, что вы знаете, как кодировать диалоговое окно с помощью JComboBox, вы можете сделать следующее, чтобы загрузить значения Enum в поле со списком:

enum ItemType {First, Second, Third};    
JComboBox myEnumCombo = new JComboBox();
myEnumCombo.setModel(new DefaultComboBoxModel(ItemType.values());

Затем, чтобы получить значение как enum, вы можете сделать

(ItemType)myEnumCombo.getSelectedItem();

Нет необходимости присваивать идентификаторы перечислениям, если логике вашего приложения не требуется назначить какой-либо значимый идентификатор. У самого enum уже есть уникальная идентификационная система.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...