Есть ли способ заставить JComboBox действовать как HTML Select?

StackOverflow https://stackoverflow.com/questions/606582

  •  03-07-2019
  •  | 
  •  

Вопрос

То, что я пытаюсь сделать, имитирует HTML-тег Select.Я хочу отображать текст в качестве опции, но при выборе я бы использовал его значение.

Например, у меня был бы список названий стран.Однако, когда пользователь выбирает Японию, я хочу получить код локали для этой страны.Таким образом, пользователь видит, что он выбрал Японию, но мой код получит "ja_JP" или что-то в этом роде.

Я пытаюсь избежать хранения названия страны и кода локали в хэш-карте или что-то в этом роде.

Это было полезно?

Решение

Создайте объект Country, который содержит отображаемое имя и код страны.Вы могли бы выполнить быстрое и грязное действие и переопределить toString для отображения отображаемого имени, а затем просто получить код, когда он вам понадобится, когда пользователь что-то выберет.

public class Country
{
    String display;
    String code;

    @Override
    public String toString()
    {
        return display;
    }

    public String getCode()
    {
        return code;
    }
}

Пропустил конструктор, так как я ленивый.Если вас не устраивает переопределение toString, вы также можете создать свой собственный рендерер, который имеет дело с объектами Country, и использовать display вместо этого через новый геттер.

Другие советы

Редактировать:Мне нужно печатать быстрее.

Обычно я создаю пользовательский объект для хранения "значения" и переопределяю toString(), чтобы вернуть то, что должен показывать JComboBox.В качестве альтернативы, вы могли бы написать свой собственный рендеринг ячеек.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top