首页 > 解决方案 > java - 如何从Java中的JComboBox中获取所选项目并将其与字符串进行比较?

问题描述

For my homework assignment I need to add 2 onto the total only if the combobox value that is selected is "deep dish"

'我努力了'

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

我得到的错误说 contentEquals 没有为该类型对象定义,我不知道正确的方法。为了清楚起见,

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

标签: javaswingjcombobox

解决方案


因为 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)继续使用contentEqualstype方法String,但在代码中显式进行类型转换:

String selectedItem = (String) myComboBox.getSelectedItem();

if (selectedItem.contentEquals("Hello world!")) {
...
}
  1. equals这个选项更简单,并且依赖于 type 的方法对于 typeObject是多态的这一事实,String您可以安全地调用它。一个通用的模式是在一个常量字符串上调用它(以避免NullPointerException):
if ("Hello Wolrd!".equals(myComboBox.getSelectedItem())) {
...
}

推荐阅读