我正在使用 NetBeans 7.3 创建一个 java 应用程序。
我有一个“创建新 Foo”向导,它在多个框架之间共享 JPanel。
JPanel 对象实现了我设置的 JList,如下所示:
http://img811.imageshack.us/img811/5717/customcodepvmarketlist.jpg
使用另一个函数,我希望能够测试 JList 的内容,如下所示:
//Adds a market to the list, if it doesn't exist.
//Removes a market from the list, if it does exist.
//If removing a market causes the list to become empty,
//insert 'None'
public String modifyMarket(String market) {
if(pvMarketList.getModel().contains(market)) {
//More Code
}
}
我无法对“.contains(market)”进行上述测试,因为 .getModel() 返回的是 ListModel 而不是 DefaultListModel。
有什么问题吗?我该如何解决这个问题?
更新
我也许可以通过将 ListModel 转换为 DefaultListModel 来解决这个问题,但我仍然对为什么返回 ListModel 感到困惑。
最佳答案
JList
需要一个 ListModel
实例才能工作。此实例可以是 DefaultListModel
的实例,但您可以创建自己的 ListModel
实现并使用它来代替 DefaultListModel
。
顺便说一句,请注意,JList 的构造函数使用 ListModel 构造 JList,该 ListModel 不是 DefaultListModel 的实例。
如果您知道它是一个 DefaultListModel
,因为这是您在构造列表时传递的内容,那么您可以安全地将返回的 ListModel
转换为 DefaultListModel
.
关于Java/Netbeans : JList. getModel() 返回 ListModel 而不是 DefaultListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15393424/