2013-04-28 150 views
2

我想通過子類化AbstractListModel來填充JList。我已經瀏覽了很多地方去嘗試並找到我在做什麼錯誤,但從未設法解決問題。所以這個類處理我的GUI ...jList不顯示來自自定義模型的數據?

//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","[email protected]","22","Def"); 
    models.contact p1 = new models.contact("Joes", "Smith","[email protected]","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是主類...

感謝真的可以使用一些幫助

+0

爲了更好地幫助越早,張貼[ SSCCE](http://sscce.org/)。 – 2013-04-28 14:12:59

+0

'我測試了DefautListModel並顯示了值 - 所以你爲什麼要創建一個自定義模型?您沒有添加任何新功能。如果你想知道默認模型是如何工作的,那麼看看源代碼,看看你做錯了什麼。 – camickr 2013-04-28 17:21:25

+0

好吧,但我想要一個自定義模型,以便首先我可以通過模型管理我的人員數據。其次,我將實現一個Database類,它將執行查詢等。因此,一個自定義模型會在模型 - >數據庫...之間建立一個橋樑,因此不需要更新模型,更新對象數組,然後在三個獨立程序。但是onfireContentChanged會處理運行必要查詢的代碼。我明白你的意思,但我只是好奇,如果我會從自定義模型中獲得更多收益 – user2329170 2013-04-29 00:32:04

回答