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

10-06 05:12