Java/Netbeans: JList.getModel() возвращает ListModel вместо DefaultListModel

Я создаю приложение Java, используя NetBeans 7.3.
У меня есть мастер «Создать новый 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 возвращается.


person Jefferson Hudson    schedule 13.03.2013    source источник


Ответы (1)


Для работы JList требуется экземпляр ListModel. Этот экземпляр может быть экземпляром DefaultListModel, но вы можете создать свою собственную реализацию ListModel и использовать ее вместо DefaultListModel.

Кстати, обратите внимание, что конструкторы JList создают JList с ListModel, который не является экземпляром DefaultListModel.

Если вы знаете, что это DefaultListModel, потому что это то, что вы передали при построении списка, то вы можете безопасно преобразовать возвращенное ListModel в DefaultListModel.

person JB Nizet    schedule 13.03.2013