如何让JComboBox
标签可供最终用户查看,并在幕后应用不同的值/数据类型?
我为我的工作场所制作了一个基本的计算器。它根据长度,材料厚度和芯尺寸计算成品卷尺寸和直径。如果我使用所有文本字段并坚持使用int / double数据类型,那么它很容易并且运行良好。然而,对于不知道材料厚度的销售人员等,我想切换到这些条目的组合框。
例如,我希望第一个组合框项目说“热转印永久”,但我希望在幕后输入.005的厚度值,我的第二个项目是“Thermal Direct Permanent”但是我想要.006进入我的数学。将添加更多材料和厚度。
答案 0 :(得分:0)
JComboBox
可以显示任何对象的列表。它显示的文本是(通常)由所述对象的toString()
方法返回的文本。您需要做的就是创建自己的数据对象,其中包含标签和值。
像这样:
class CoBoItem {
private final String display;
private final float value;
// constructor to create your data objects
CoBoItem(String display, float value) {
this.display = display;
this.value = value;
}
// methods to get the values
String getDisplay() {
return display;
}
float getValue() {
return value;
}
// this will be displayed in the JComboBox
@Override
public String toString() {
return display;
}
}
然后用这个数据类初始化你的JComboBox作为类型参数,就像这样。
JComboBox<CoBoItem> cb = new JComboBox<>();
cb.addItem(new CoBoItem("Thermal transfer Permanent", 0.005f));
cb.addItem(new CoBoItem("Thermal Direct Permanent", 0.006f));
您可以使用
访问所选项目cb.getSelectedItem();
它将返回一个Object,因此您必须将其强制转换为CoBoItem。