java - ActionListener 无法通过按钮将数据从 JList 移动到其他 JList

标签 java swing actionlistener jlist defaultlistmodel

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

您正在尝试创建 MyAPI出一个String ,这不起作用,可能是 ClassCastException被抛出。

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

关于java - ActionListener 无法通过按钮将数据从 JList 移动到其他 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726359/

相关文章:

java - 映射实体 "ignoring"中间表

java - 如果Java的http代理关闭,它会恢复为非代理

java - 为什么我用这个程序得到非法的开始类型?我刚刚开始,但不知道哪里出错了

java - JScrollPane JPanel 和布局

java - 无法使 JComboBox 更新 JFrame

java - 编写 Swing 组件 : How do I add the ability to add ActionListeners?

Java 在单独的类上添加 ActionListener

java - 在应用 order by 之前操作 Firebase 文档字段中存储的值

java - 在消息驱动 Bean (MDB) 中生成新的 Java 线程

java - 什么时候开窗?如何在不监听窗口事件的情况下知道窗口已打开?