有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing Java/Netbeans:JList。getModel()返回一个ListModel而不是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   
    }         
}

我不能做上面的测试。包含(市场)“因为”。getModel()返回的是ListModel,而不是DefaultListModel

有什么问题吗?我该怎么解决这个问题

更新
我可以通过将ListModel转换为DefaultListModel来解决这个问题,但我仍然不明白为什么ListModel是返回的


共 (1) 个答案

  1. # 1 楼答案

    一个JList需要一个ListModel的实例才能工作。这个实例可以是DefaultListModel的实例,但您可以创建自己的ListModel实现,并使用它来代替DefaultListModel

    顺便说一句,JList的构造函数使用不是DefaultListModel实例的ListModel构造JList

    如果您知道它是一个DefaultListModel,因为这是您在构建列表时传递的,那么您可以安全地将返回的ListModel强制转换为DefaultListModel