2013-03-31 4 views
0

Моя программа основана на API. Я получил JList и модель, у которой есть некоторые имена. И selectListener, чтобы получить снятый элемент и кнопку, чтобы отправить этот элемент в другое окно с другим. Вот мой первый список:ActionListener не работает для перемещения данных из JList в другой JList кнопкой

Первый список (окно) и отправить его в другой список.

final DefaultListModel<String> Names = new DefaultListModel<String>(); 
final JList<MyAPI> Places = new JList(Names); 

private JList<MyAPI> locList; 
private DefaultListModel<MyAPI> favourites; 

    public AddLocation(JList<MyAPI> locList, DefaultListModel<MyAPI> favourites){ 
     this.locList = locList; 
     this.favourites = favourites; 
} 


addThis.addActionListener(new ActionListener(){ 
    public void actionPerformed(ActionEvent e) { 
    Object chose = Places.getSelectedValue(); 
    favourites.addElement((MyAPI) chose); // error in this line 
       } 
      }); 

И это другое окно, в котором выбранные элементы должны быть добавлены здесь:

final DefaultListModel<MyAPI> favourites; 
final JList<MyAPI> locList; 

favourites = new DefaultListModel<MyAPI>(); 
locList = new JList<MyAPI>(favourites); 

Так что теперь оба окна нагрузок и первый список нагрузок с его названия в нем. но когда я нажимаю кнопку, добавьте это, оно дает ошибку и указывает на эту строку:

favourites.addElement((MyAPI) chose); 

Как это можно решить?

ответ

1

Ваша первая модель определяется следующим образом:

final DefaultListModel<String> Names ...; 

Ваша вторая модель определяется следующим образом:

final DefaultListModel<MyAPI> favourites; 

Ваша первая модель списка conains String экземпляров, ваша вторая модель содержит MyAPI экземпляров. Поэтому, когда эта линия выполнена:

favourites.addElement((MyAPI) chose); 

вы пытаетесь сделать MyAPI из String, который не работает и, вероятно, ClassCastException отбрасывается.

Либо вы должны объявить вторую модель списка как final DefaultListModel<String> favourites; или создать экземпляр MyAPI на основе выбранного String (new MyAPI(chose)?).

Смежные вопросы