2013-03-31 3 views
0

내 프로그램은 API를 기반으로합니다. JList를 가지고 있고 모델에 몇 가지 이름이 있습니다. 선택된 항목을 가져 오는 selectListener와 다른 항목이있는 다른 창으로 항목을 보내는 버튼입니다. 내 첫 목록은 다음과 같습니다.ActionListener가 버튼을 사용하여 JList에서 다른 JList로 데이터를 이동하지 않습니다.

첫 번째 목록 (창)은 항목을 다른 목록으로 보냅니다. 그래서 지금 윈도우로드하고있는 그것의 이름으로 첫 번째 목록로드 모두

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

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

:

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 
       } 
      }); 

는 그리고이 항목은 여기에 추가해야합니다 선택한 다른 창입니다. 나는 버튼이 추가 누르면하지만,이 라인에 오류 및 포인트를 제공합니다

favourites.addElement((MyAPI) chose); 

내가 그것을 어떻게 해결할 수 있습니까?

답변

1

첫 번째 모델은 다음과 같이 정의된다 :

final DefaultListModel<String> Names ...; 

두 번째 모델은 다음과 같이 정의된다 :

final DefaultListModel<MyAPI> favourites; 

첫 번째 목록의 모델은 두 번째 모델은 MyAPI 인스턴스를 포함, String 인스턴스를 conains. 따라서이 라인이 실행될 때 : 당신이 작동하지 않고 아마 ClassCastException가 발생하는 String, 밖으로 MyAPI를 만들려고

favourites.addElement((MyAPI) chose); 

.

은 어느 당신은 final DefaultListModel<String> favourites;로 두 번째 목록 모델을 선언 할 필요하거나 선택한 String에 따라 MyAPI의 인스턴스 생성 (new MyAPI(chose)을?).