将java.util.list与listmodel关联
我创建了一个带有自定义ListModel的jList来显示一些对象(用户)。我尝试使用dao架构。当我使用des DAO类向我的收藏中添加联系人时,Listmodel不会更新。列表模型似乎已被破坏 这是我的带有customListModel的Jlist将java.util.list与listmodel关联,java,swing,jlist,defaultlistmodel,Java,Swing,Jlist,Defaultlistmodel,我创建了一个带有自定义ListModel的jList来显示一些对象(用户)。我尝试使用dao架构。当我使用des DAO类向我的收藏中添加联系人时,Listmodel不会更新。列表模型似乎已被破坏 这是我的带有customListModel的Jlist > Service dcs = new DefaultService(MyDao); > CustomListModel cList = new CustomListModel( dcs ); > list =
> Service dcs = new DefaultService(MyDao);
> CustomListModel cList = new CustomListModel( dcs );
> list = new JList<>(cList);
> list.addMouseListener(new ContactListItemListener(list,this.dcs));
当执行ActionExecuted时,新用户被添加到我的用户列表中,但是customListModel没有显示test消息,似乎customListModel被销毁了
抱歉,我的英语不好JList无法刷新,因为它无法知道数据库中已添加了某些内容,因此应该再次向模型询问新元素。在向数据库添加内容时,必须触发事件,或者用具有新列表的新模型替换列表的模型
顺便说一句,如果您不打算使用DefaultListModel封装的数据,您不应该扩展DefaultListModel,而应该扩展AbstractListModel。查看其
fireXxx()
方法来触发事件。您需要发布相关代码,没有它就无法回答您的问题。将“已销毁”投票定义为在当前状态下无法回答。请改进,“销毁”是什么意思?你真的需要查看评论并回答问题,如果你想得到“销毁”的帮助,我的意思是CustomListModel没有像添加用户之前那样在“getElementMethod”中显示“syso”,我的结论是该模型已销毁。非常感谢Jb,它可以工作!在为我的服务添加一个用户之后,我将一个新的listmodel设置到我的jList中。每次更改列表时,是否可以不必重置listmodel而执行相同的操作?我搜索了如何使用fire*()方法,但没有找到简单的教程。
public class CustomListModel extends DefaultListModel<Contact>{
private ContactService dcs ;
public CustomListModel(ContactService dcs) {
this.dcs = dcs;
}
@Override
public void addListDataListener(ListDataListener arg0) {
// TODO Auto-generated method stub
}
@Override
public Contact getElementAt(int i) {
System.out.println(dcs.list().size()+" Test "+dcs.list()); //just for testing
return dcs.list().get(i);
}
@Override
public int getSize() {
return dcs.list().size();
}
@Override
public void removeListDataListener(ListDataListener arg0) {
// TODO Auto-generated method stub
}
}
public void actionPerformed(ActionEvent e) {
this.dcs.add(new User());
}