ActionListener不能通过按钮将数据从一个JList移动到另一个JList



我的程序是基于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);

我怎么解决它?

您的第一个模型是这样定义的:

final DefaultListModel<String> Names ...;

第二个模型定义如下:

final DefaultListModel<MyAPI> favourites;

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

favourites.addElement((MyAPI) chose);

您正在尝试从String中制作MyAPI,这不起作用,可能会抛出ClassCastException

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

相关内容

  • 没有找到相关文章

最新更新