2013-04-25 19 views
5

Ich habe ein Array von Objekten, die den Namen des Kunden, wie diese enthalten: Customers[]Elemente zu einem JList Hinzufügen

Wie ich diese Elemente zu einem vorhandenen JList hinzufügen kann automatisch, nachdem ich eine Taste drücken? Ich habe so etwas versucht:

for (int i=0;i<Customers.length;i++) 
{ 
    jList1.add(Customers[i].getName()); 
} 

Aber ich bekomme immer einen Fehler. Wie kann ich das lösen? Ich arbeite an NetBeans. Der Fehler, der für add (String). Durch die Art und Weise meine Methode getName zurückkehrt den Namen des Kunden in einem String.

+1

Welche Art von Fehler erhalten Sie? Außerdem wird mehr Code Ihre Frage leichter verständlich machen. – Abbas

+0

Riecht wie eine falsche Liste, um etwas hinzuzufügen! – skuntsel

+1

[So verwenden Sie Listen] (http://docs.oracle.com/javase/tutorial/uiswing/components/list.html) – Howard

Antwort

1

In die ListModel anstatt direkt an die JList gefunden „nicht geeignete Methode erscheint . selbst Derzeit verwenden Sie die add Methode, die nicht den Inhalt der Liste wirkt sich DefaultListModel wandelbar ist so zur Laufzeit aktualisiert werden

deklarieren:..

JList<String> jList1 = new JList<String>(new DefaultListModel<String>()); 

Hinzufügen:

((DefaultListModel)jList1.getModel()).addElement(Customers[i].getName()); 
7

Die add Methode Sie verwenden, ist die Container#add Methode, so sicherlich nicht das, was Sie brauchen. Sie müssen die ListModel, z.

DefaultListModel<String> model = new DefaultListModel<>(); 
JList<String> list = new JList<>(model); 

for (int i = 0; i < customers.length; i++){ 
    model.addElement(customers[i].getName()); 
} 

Edit:

Ich stellte den Code-Schnipsel, die Namen direkt zum Modell hinzuzufügen. Dies vermeidet die Notwendigkeit für einen benutzerdefinierten Renderer

+0

Sollte es nicht sein? Model.addElement (customers [i] .getNmae()); '? –

+0

@AdegokeA Ich bevorzuge es, die Datenelemente direkt im Modell hinzuzufügen und im Renderer zu entscheiden, welche Art von Eigenschaften ich zeigen möchte. Aber ja, wenn ich den Code in der Frage näher zusammenbringen wollte, müsste ich den Namen hinzufügen und die '' durch '' in der Liste und Modelldefinition – Robin

+0

@Robin ersetzen, gibt es dort keinen anderen einfacheren Weg zu tun es? Ich meine, für den Benutzer transparenter. Ich erinnere mich, dass es in anderen Sprachen so einfach war, list.additem() zu setzen. – Little

Verwandte Themen