swing—如何从java中的jcombobox中获取所选项并将其与字符串进行比较?

omhiaaxx  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(380)

对于我的家庭作业,只有在选择的组合框值为“深碟”时,我才需要在总数上加2
“我试过了”

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

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

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

lpwwtiir1#

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

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

你看, thickness.getSelectedItem() 现在将返回一个字符串。
编辑
我只是看看里面 javax.swing.JComboBox.java 它们忽略方法的泛型类型信息 getSelectedItem() :

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

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

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

if (selectedItem.contentEquals("Hello world!")) {
...
}

此选项更简单,并且依赖于 equals 类型 Object 是多态的类型 String 你可以放心地称之为。一般的模式是在常量字符串上调用它(以避免 NullPointerException ):

if ("Hello Wolrd!".equals(myComboBox.getSelectedItem())) {
...
}

相关问题