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是主類...
感謝真的可以使用一些幫助
爲了更好地幫助越早,張貼[ SSCCE](http://sscce.org/)。 – 2013-04-28 14:12:59
'我測試了DefautListModel並顯示了值 - 所以你爲什麼要創建一個自定義模型?您沒有添加任何新功能。如果你想知道默認模型是如何工作的,那麼看看源代碼,看看你做錯了什麼。 – camickr 2013-04-28 17:21:25
好吧,但我想要一個自定義模型,以便首先我可以通過模型管理我的人員數據。其次,我將實現一個Database類,它將執行查詢等。因此,一個自定義模型會在模型 - >數據庫...之間建立一個橋樑,因此不需要更新模型,更新對象數組,然後在三個獨立程序。但是onfireContentChanged會處理運行必要查詢的代碼。我明白你的意思,但我只是好奇,如果我會從自定義模型中獲得更多收益 – user2329170 2013-04-29 00:32:04