Java jList不显示来自自定义模型的数据?

Java jList不显示来自自定义模型的数据?,java,swing,netbeans,jlist,Java,Swing,Netbeans,Jlist,我正试图通过对AbstractListModel子类化来填充JList。我已经浏览了很多地方,试图找出我做错了什么,但从未设法解决问题。因此,这个类处理我的GUI //View public class central extends javax.swing.JFrame { public central() { initComponents(); list.addMouseListener(new abstracts.mouseActions(list)); } publ

我正试图通过对AbstractListModel子类化来填充JList。我已经浏览了很多地方,试图找出我做错了什么,但从未设法解决问题。因此,这个类处理我的GUI

//View
public class central extends javax.swing.JFrame {

public central() {
    initComponents();
    list.addMouseListener(new abstracts.mouseActions(list));

}

public void setListModel(ListModel l ){
    list.setModel(l);

}

// The rest are auto generated code for the interface, not relevant
然后是我的中产阶级

 public class MainCtrl {
//View reference
private views.central mainFrame = new views.central();
//Model reference
private abstracts.ListData model = new abstracts.ListData();
/*All this was testing purposes and it worked
  private DefaultListModel model = new DefaultListModel();
 */

private void showView(){
    mainFrame.setListModel(model);
    mainFrame.setVisible(true);
    models.contact p2 = new models.contact("Alex", "Christopher","alex@hotmail.com","22","Def");
    models.contact p1 = new models.contact("Joes", "Smith","joey@hotmail.com","33","Def");
    model.addContact(p2);
    model.addContact(p1);
    /* def version
      model.addElement(p2);

    */


}

public static void main(String[] args) {
    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        new MainCtrl().showView();
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}
然后我得到了AbstractListModel的实现

public class ListData extends AbstractListModel {    
//Store people info
private Vector<contact> people; 

public ListData() {
    people = new Vector<contact>();
}

public void addContact(contact newPerson){
   people.add(newPerson);
   int per = people.indexOf(newPerson);
   fireIntervalAdded(this,0,getSize());
}

@Override
public contact getElementAt(int index){
    return  people.get(index);
}

@Override
public int getSize(){
    return people.size();
}


@Override
protected void fireIntervalAdded(Object src, int index, int index2){
 System.out.println(index2);    
}

.....
我测试了DefautListModel,它显示了值,但是当我合并一个自定义模型时,它不显示?我还缺一步吗?mainCtrl也是主类

谢谢,我真的需要一些帮助

 listModel = new DefaultListModel();
 listModel.addElement("Jane Doe");
 listModel.addElement("John Smith");
 listModel.addElement("Kathy Green");


 list = new JList(listModel);
请参考此链接,它将帮助您

请参考此链接,它将帮助您

而不是

FireIntervalAdded这个,0,getSize

在你的地址里

fireContentsChangedthis,0,getSize

而不是

FireIntervalAdded这个,0,getSize

在你的地址里


fireContentsChangedthis,0,getSize

为了更快地获得更好的帮助,请发布一个“我测试了DefautListModel,它显示了值”——那么为什么要创建自定义模型呢?您没有添加任何新功能。如果你想知道默认模型是如何工作的,那么看看源代码,看看你做错了什么。好吧,但我想要一个自定义模型,这样首先我可以通过模型管理我的人员数组数据。其次,我将实现一个数据库类,该类将执行查询等。因此,自定义模型将在模型->数据库之间创建一个桥梁…因此,不需要更新模型、更新对象数组,然后在三个单独的过程中更新数据库。我理解你的意思,我只是想知道我是否能从自定义模型中获得更多好处我正在使用DefaultListModel它的工作请尽快参考以获得更好的帮助,发布一个.‘我测试了DefautListModel,它显示了值’——那么为什么要创建自定义模型呢?您没有添加任何新功能。如果你想知道默认模型是如何工作的,那么看看源代码,看看你做错了什么。好吧,但我想要一个自定义模型,这样首先我可以通过模型管理我的人员数组数据。其次,我将实现一个数据库类,该类将执行查询等。因此,自定义模型将在模型->数据库之间创建一个桥梁…因此,不需要更新模型、更新对象数组,然后在三个单独的过程中更新数据库。我理解你的意思,我只是想知道我是否能从自定义模型中获得更多好处。我正在使用DefaultListModel,这是我的工作参考