0

我的程序基于 API。我有一个 JList 和一个有一些名称的模型。还有一个 selectListener 来获取选中的项目和一个按钮来将该项目发送到另一个窗口,这是我的第一个列表:

第一个列表(窗口)并将项目发送到另一个列表。

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

我该如何解决?

4

1 回答 1

1

您的第一个模型定义如下:

final DefaultListModel<String> Names ...;

您的第二个模型定义如下:

final DefaultListModel<MyAPI> favourites;

您的第一个列表模型包含String实例,您的第二个模型包含MyAPI实例。因此,当执行此行时:

favourites.addElement((MyAPI) chose);

您正在尝试从 aMyAPI中提取 a String,但这不起作用,并且可能 aClassCastException被抛出。

您需要将第二个列表模型声明为,final DefaultListModel<String> favourites;或者您创建一个MyAPI基于所选String( new MyAPI(chose)?) 的实例。

于 2013-03-31T11:52:18.227 回答