как использовать JComboBox с помощью Перечисления в Диалоговом окне

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

перечисление itemType {Первый, Второй, Третий};

общедоступный класс Объект

{

частный itemType enmItemType;

...

}

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

спасибо.

7
задан firestruq 26 April 2010 в 16:14
поделиться

3 ответа

JComboBox combo = new JComboBox(itemType.values());
8
ответ дан 6 December 2019 в 05:48
поделиться

Я использовал следующий подход:

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 , поскольку имена типов всегда должны иметь начальную заглавную букву.

21
ответ дан 6 December 2019 в 05:48
поделиться

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

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

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

(ItemType)myEnumCombo.getSelectedItem();

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

3
ответ дан 6 December 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: