我有一个代码列表,与不同的操作相关。
我想显示易于阅读的信息,供用户选择,但是当用户选择他们想要的内容时,当他们单击按钮提交时,后端操作与代码列表相关。
例:

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

最佳答案

最佳答案取决于这些标签代码对是否发生了很大变化。为了灵活性:

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);


选项将根据其toString()显示,但是一旦选择,您就可以轻松确定其内部代码:

FooOption[] selected = options.getSelectedItems();
if (selected.length == 1) {
   System.err.println("you have selected " + selected[0].getCode());
}


如果您不需要在启动时灵活地从文件或类路径资源中加载它们,也可以使用enum(只需使用public enum FooOperation并初始化enum类中的所有可能的操作)。这比较简单(没有文件),但是很难扩展(您必须触摸代码并重新编译才能更改可用选项)

10-07 19:32
查看更多