对于我的家庭作业,只有当所选的组合框值为"深碟;
"我试过了">
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!")) {
...
}
- 此选项更简单,并且依赖于
Object
类型的方法equals
对String
类型是多态的,您可以安全地调用它。一般模式是在常量字符串上调用它(以避免NullPointerException
(:
if ("Hello Wolrd!".equals(myComboBox.getSelectedItem())) {
...
}