Как отобразить информацию в JComboBox, но выбрать другую информацию для бэкэнда - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть список кодов, которые соотносятся с различными операциями.Я хотел бы отобразить легкую для чтения информацию для выбора пользователем, но когда пользователь выбирает то, что он хочет, когда он нажимает кнопку, чтобы подтвердить, что бэкэнд-операция соотносится со списком кодов.Пример:

 Displayed          | Backend                        
--------------------|------------------------------------------
 Hardware Inventory | "{00000000-0000-0000-0000-000000000001}" 
 Software Inventory | "{00000000-0000-0000-0000-000000000002}" 

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Лучший ответ зависит от того, сильно ли меняются эти пары код-метка.Для гибкости:

public class FooOperation {
    private final String label;
    private final String internalCode;
    public FooOperation(String label, String internalCode) {
        this.label = label;
        this.internalCode = internalCode;
    }
    public String toString() { return label; } // human-readable, displayed in CB
    public String getCode() { return internalCode; } // ugly but true
}

Затем вы можете загрузить их из файла при запуске приложения, и с учетом FooOperation[], который вы каким-то образом загрузили, вы можете отобразить его через

JComboBox options = new JComboBox(availableOperations);
* 1007.* Опции будут отображаться в соответствии с их toString(), но после выбора вы можете легко определить их внутренний код:
FooOption[] selected = options.getSelectedItems();
if (selected.length == 1) {
   System.err.println("you have selected " + selected[0].getCode());
}

Если вам не требуется гибкость загрузки их из файла или ресурса classpath по адресупри запуске вы также можете перейти на enum (просто используйте public enum FooOperation и инициализируйте все возможные операции в классе enum).Это проще (без файлов), но сложнее расширить (вам нужно будет нажать на код и перекомпилировать, чтобы изменить доступные параметры)

0 голосов
/ 19 сентября 2019

Создайте свой собственный класс с не слишком презентабельными значениями значений и легко читаемыми значениями, возвращаемыми в методе toString () -.Затем добавьте значения в поле со списком.Получите значения с помощью getSelectedItem ().

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