将 java.util.list 关联到 ListModel



我创建了一个带有自定义列表模型的jList来显示一些对象(User)。我尝试使用道架构。当我使用 des DAO 类将联系人添加到我的集合时,列表模型不会更新。似乎列表模型被破坏了.

这是我的Jlist和customListModel。

>    Service dcs = new DefaultService(MyDao);
>    CustomListModel cList = new CustomListModel( dcs );
>    list = new JList<>(cList);
>    list.addMouseListener(new ContactListItemListener(list,this.dcs));

自定义列表模型 :

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

执行操作时,新用户将添加到我的用户列表中,但自定义列表模型不显示测试消息,似乎自定义列表模型已被销毁。

对不起,我的英语不好

JList 不会刷新,因为它无法知道某些内容已添加到数据库中,因此它应该再次向模型询问新元素。当您向数据库添加某些内容时,您必须触发一个事件,或者将列表的模型替换为具有新列表的新模型。

顺便说一句,如果你不打算使用DefaultListModel封装的数据,你不应该扩展DefaultListModel,而是AbstractListModel。请参阅其触发事件fireXxx()方法。

相关内容

  • 没有找到相关文章

最新更新