JList - Item hinzufügen / Liste leeren
lima-city → Forum → Programmiersprachen → Java
array
befehl
code
editor
einfachste art
element
folgende fehlermeldung
funktion
http
list
liste
methode
modeln
null
objekt
schritt
string
url
vorschlag
zugreifen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Vllt so (habs nicht probiert):
private DefaultListModel model; model = new DefaultListModel() { { addElement("Item0"); addElement("Item1"); } }; list = new JList(model);
oder so:
((DefaultListModel)list.getModel()).addElement(...);
Beitrag zuletzt geändert: 16.5.2009 15:24:40 von koslo -
Bei mir existiert er. du musst auf das ListModel zugreifen.
-
Einfügen:
((DefaultListModel)list.getModel()).addElement(...);
Aktualisieren der Liste vllt mit:
list.revalidate();
Löschen vllt mit:
list.setModel(null);
Wie gesagt, ich weiß nicht, ob es geht. Ich denke auch, dass das nicht die besten Lösung ist. Besser wäre es ein eigenes ListModel zu schreiben... -
koslo schrieb:
((DefaultListModel)list.getModel()).addElement(...);
Ja, aber da muss ein Objekt rein! Wie bekomme ich also in das Objekt den String?
list.setModel(null);
Das geht nicht. -
String ist eine abgeleitete Klasse von Object:
((DefaultListModel)list.getModel()).addElement(STRING); -
Dann kommt aber folgende Fehlermeldung:
A java.lang.NullPointerException exception has occurred.
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: htmleditor.Editor$1 cannot be cast to javax.swing.DefaultListModel
Link zu:((DefaultListModel)Liste.getModel()).addElement(hc[n]);
hc[] als ein String- Array
... ? ... -
vllt deswegen:
A java.lang.NullPointerException exception has occurred.
Ich weiß es nicht, ich kenn dein Code nicht. Aber wenn hc ein String [] (-Array) ist dann ist hc[] ein String.
Kannst es ja mal mit einem Text probieren und schauen ob es geht. -
Moin,
Koslo hat Dir schon richtige Ansätze gegeben, wenn nicht sogar die komplette Lösung.
Wenn Du uns mit Deinem Code versorgen würdest, so könnte man auch tiefgreifender darauf eingehen.
Also Source her, sonst kann man hier nur weiter spekulieren
Gruß,
Pawnee -
Der Code ist etwas lang, deshalb stelle ich hier nur die Funktion rein, in der der Fehler (denke ich doch, dass er hier ist) auftritt...
Es handelt sich um einen HTML- Editor, von mir geschrieben. Die Class HTML ist eine Klasse, welche einen String mit sämtlichen HTML- Befehlen enthält (dass der String extrahiert wird, ist natürlich nicht optimal, aber ich sehe erst jetzt, dass ich den Schritt sparen kann). Der String code enthält das Wort, das gerade geschrieben wird.
private void Hilf(String code) { String vorschlag; String hc[] = HTML.getCode(); for (int n = 0; n < 11; n++) { try { vorschlag = hc[n].substring(0, code.length()); } catch (StringIndexOutOfBoundsException ex) { vorschlag = null; } if (code.equals(vorschlag)) { ((DefaultListModel)Liste.getModel()).addElement(hc[n]); } } }
Beitrag zuletzt geändert: 16.5.2009 22:05:17 von toolz -
Moin,
also was hier wohl grundlegend geändert werden müsste, wäre der Zugriff.
In Deinem Beispiel greifst Du direkt auf die JList und dem ListModel zu.
Demnach würde ich vorschlagen, dass Du es komplett auseinander nimmst und nach MVC-Prinzip aufteilst.
Und zwar so, dass Deine Methode etwas zum ListModel hinzufügt.
Über einen Listener wird die JList dann verständigt, dass sich das Model geändert hat und entsprechend aktualisiert wird.
Sei es ob Du per add-Methode etwas hinzugefügt oder per clear-Methode die Liste geleert hast.
Für eine umfassende Erklärung von Model-View-Bezügen gibt es ein Linkverzeichnis im Java-Forenbereich zu ordentlichen Tutorials.
Gruß,
Pawnee -
Ich komme da nicht ganz dahinter.
Welchen Listener benötige ich genau? Und wie verbinde ich den mit dem ListModel?
Ist das der ListDataListener?
Beitrag zuletzt geändert: 19.5.2009 20:07:18 von toolz -
Schau ma hier:
http://freenet-homepage.de/koslo/JList.htm
Ist nicht der beste Code, sollte aber dein Problem auf die einfachste Art lösen!
Beitrag zuletzt geändert: 19.5.2009 22:06:07 von koslo -
Moin,
Hier ist der entsprechende Link auf den ich in meinem voherigen Beitrag hingewiesen habe:
http://java.sun.com/docs/books/tutorial/uiswing/components/list.html
Dort ist beschrieben, wie man eine JList mit dem ListModel verbindet und auf Änderungen reagiert.
Mehr brauchst Du gar nicht...
Gruß,
Pawnee -
Danke, das hat mir sehr geholfen. Ich habe es auch ohne den Listener geschafft, indem ich erst ein ListModel gefüllt habe und am Ende der Funktion dieses in die Liste eingebunden habe.
-
Ich weiß nicht, ob dir das jetzt noch hilft, aber so könnte man es machen:
String[] elements = { "Element 1", "Element 2", }; DefaultListModel model = new DefaultListModel(); for (String element : elements) model.addElement(element); jList1.setModel(model); // jList1.setSelectedIndex(0);
Beitrag zuletzt geändert: 28.5.2009 18:40:58 von devex -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage