Есть ли способ заставить JComboBox действовать как HTML Select?
Вопрос
То, что я пытаюсь сделать, имитирует 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.В качестве альтернативы, вы могли бы написать свой собственный рендеринг ячеек.