我有一个只有一个项目的JComboBox
。当我将此项填充到框中时,我立即使用 combobox.setSelectedItem(item)
选择它。但不幸的是,当我使用 combobox.getSelectedIndex(0)
或 combobox.getSelectedItem(item)
读取项目时,我得到 -1/null。
当然我知道盒子里是哪个项目,但我不想添加一个声明来对这种情况使用react。
你能告诉我如何读取组合框中的单独项目吗?
最佳答案
问题
combobox.setSelectedItem(item)
将 item
作为 Object
并在项目中检查它。由于 combobox.getSelecedIndex
返回 -1,我们已经知道没有选择,因此您的选择不成功。
原因
您将一个对象传递给 setSelectedItem
,但在项目中找不到该 Object
。您的 Object
很可能是一个 String
并且您正在传递一个类似的 String
作为参数,但您传递的参数不是相同的 String
,bug 相似。
行为测试
String foo = "bar";
boolean theSame = (foo == "bar"); //false
boolean similar = foo.equals("bar"); //true
解决方案
调用 setSelectedItem
时使用相同的 Object
而不是类似的 Object
。
关于Java Swing JComboBox 选择唯一可用的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41789610/