我正在尝试创建我的第一个列表,但是我被一个错误困住了。
下面是用于列表模型的模板:
private ListModel getListModel() {
String[] arrayOfStrings = new String[3];
arrayOfStrings[0] = "one";
arrayOfStrings[1] = "two";
arrayOfStrings[2] = "three";
ListModel listModel = new DefaultListModel();
for (int i=0;i<arrayOfStrings.length;i++) {
listModel.addElement(arrayOfStrings[i]);
}
} 错误:
error: cannot find symbol
listModel.addElement(arrayOfStrings[i]);
symbol: method addElement(String)
location: variable listModel of type ListModel我对使用界面和列表仍然很陌生。我下载了一个生成列表的示例代码,它们的代码非常相似。我遗漏了什么?我导入了示例代码导入的所有东西。
发布于 2016-12-22 21:43:00
当有疑问时,请转到API,因为它将显示所有内容。在这种情况下,API将向您展示接口ListModel<E>没有addElement(...)方法。您必须将变量声明为DefaultListModel<E>类型,因为这是具有此方法的实现。
参考文献:
尽管如此,您的方法仍然可以返回ListModel接口类型..。例如,
// method declared to return the interface, ListModel
private ListModel<String> getListModel() {
String[] arrayOfStrings = {"one", "two", "three"};
// make sure to use generic types
DefaultListModel<String> listModel = new DefaultListModel<>();
for (String txt : arrayOfStrings) {
listModel.addElement(txt);
}
return listModel; // don't forget to return a result
}发布于 2016-12-22 21:44:03
函数addElement(...)是在DefaultListModel中声明的,而不是在ListModel中声明的,因此只能在声明为DefaultListModel的对象上调用它。
使用DefaultListModel listModel = new DefaultListModel();修复您的代码。
https://stackoverflow.com/questions/41292050
复制相似问题