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