Java/Netbeans : JList. getModel() 返回 ListModel 而不是 DefaultListModel

标签 java swing netbeans jlist defaultlistmodel

我正在使用 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/

相关文章:

java - 如何生成与 java 联合的 graphql 模式?

java - eclipse 看不到我的 lenovo S650 手机

java - 在Micronaut的声明式客户端中传递自定义 header

java - 在 JPanel 与 JComponent 中绘图

java - 当JSpinner的值超出范围时如何改变它?

java - 如何在 Zookeeper/Curator 中进行 upsert?

java - JPanel 的空指针异常

java - JSpinner 更新

php - Netbeans 不显示 php 7

java - 当进度条达到某个值时更改 jLabel 文本