如何从java中的JComboBox中获取选定的Item并将其与字符串进行比较



对于我的家庭作业,只有当所选的组合框值为"深碟;

"我试过了">

thickness.getSelectedItem().contentEquals("deep dish")
{
total += 2.00;
}

我得到的错误表明,对于该类型的对象,contentEquals是未定义的,我不知道正确的方法。为了清晰起见,

String[] choices = {"thin","original","deep dish"};
thickness = new JComboBox(choices);

因为JComboBox是一个泛型类型。您使用的构造函数是Java 5之前的样式。这意味着您在编译时不会得到泛型提供的类型检查。我的建议是使用IDE,它可以突出编辑器中的一些明显错误。创建JComboBox的正确方法是:

JComboBox<String> thickness = new JComboBox<String>(choices);

您知道,thickness.getSelectedItem()现在将返回一个字符串。

编辑

我只是查看了javax.swing.JComboBox.java内部,他们忽略了方法getSelectedItem():的通用类型信息

public Object getSelectedItem() {
return dataModel.getSelectedItem();
}

您有两个选项:1(继续使用String类型的方法contentEquals,但在代码中显式执行类型转换:

String selectedItem = (String) myComboBox.getSelectedItem();
if (selectedItem.contentEquals("Hello world!")) {
...
}
  1. 此选项更简单,并且依赖于Object类型的方法equalsString类型是多态的,您可以安全地调用它。一般模式是在常量字符串上调用它(以避免NullPointerException(:
if ("Hello Wolrd!".equals(myComboBox.getSelectedItem())) {
...
}

相关内容

最新更新