奇怪的情况:JcomboBox.getSelectedItem()返回一个不可转换为String的对象

时间:2019-02-20 08:40:57

标签: java swing

comboBox是我用来填充JComboBox的String数组

JComboBox chooser = new JComboBox(comboBox);

为什么当我调用第二条命令时,它返回给我Object类的toString方法(具体来说:“ [Ljava.lang.Object;@28f4b2ca”)而不是String?

courrentKey = String.valueOf(chooser.getSelectedObjects());

2 个答案:

答案 0 :(得分:0)

getSelectedObjects()返回一个Object[],您看到的是此toString()数组中的Object

您可能打算使用courrentKey = chooser.getSelectedItem()

答案 1 :(得分:0)

一些额外的信息。 误解可能是JComboBox仅适用于字符串值。

您可以使用String数组初始化JComboBox

String[] items = new String[] { "LOL", "YOLO" };
JComboBox combo = new JComboBox(items);

但是此后,仍然可以使用 JComboBox.addItem(item)方法添加对象。
其中项目是任何对象->字符串,整数,双精度,浮点型,...
因此,这是允许的:

Integer extraItem = 69;
combo.addItem(extraItem);

这是有效的,除非您在初始化时对类型进行参数化,然后再只能添加String对象。

JComboBox<String> combo = new JComboBox<String>(items);


由于这种行为, JComboBox.getSelectedObjects()方法返回一个对象数组-> Object []

要获取所选项目,您可以执行以下操作

Object selectedItem = combo.getSelectedItem();

Object selectedItem = combo.getSelectedObjects()[0];

然后使用返回值

if (selectedItem == null) {
    return null;
} else {
    return selectedItem.toString().trim();
}