Listen - DefaultListModel trotz Design ueber GUI?

Status
Nicht offen für weitere Antworten.

Qmark

Mitglied
Hallo allerseits,

mich plagt folgendes Problem:
Ich habe ueber den Designmodus (ich nehme an das ganze nennt sich Swing) das Layout meines Programms schon recht schoen festgelegt: Eine Eingabezeile, ein Knopf und eine Liste.
Durch Druecken des Knopfes soll nun der Inhalt der Zeile in die Liste kommen, also ungefaehr:

Code:
 private void goButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         
String textInZeile = Zeile.getText();
dieListe.addElement(textInZeile)
}

Auf diese Weise funktioniert es wunderbar, wenn ich das ganze in ein heruntergeladenes, eigentlich exakt funktionsgleiches Programm setze (http://java.sun.com/docs/books/tuto.../ListDemoProject/src/components/ListDemo.java)

Bastel ich mir aber mein Programm graphisch, wechsle in den Codemodus und setze "dieListe.addElement(Zeile.getText()); "unter die Action fuer den Knopf, so bietet mir das Objekt dieListe die Methode .addElement gar nicht erst an. Beim Durchsuchen der Vorschlage von Netbeans war auch nichts aehnliches dabei...

Ich habe ein wenig gegoogelt und meine herausgefunden zu haben, dass das daran liegt, dass beim graphischen Anordnen der Elemente das Objekt Jlist und nicht DefaultListModel benutzt wird. Und siehe da - beim Beispiel von Sun ist tatsaechlich DefaultListModel benutzt worden.

Nun die Frage: Wie schaffe ich es, meine Liste dazu zu kriegen, dass sie addElement akzeptiert?

Ich hoffe ich konnte mich einigermassen klar ausdruecken und dass mir jemand helfen kann.

Vielen Dank,
Qmark
 

Ebenius

Top Contributor
Du konntest Dich einiger Maßen klar ausdrücken.

Im Swing sind (fast) alle Komponenten mit Modellen ausgestattet. Diese Modelle sind als Interface definiert und beschreiben die Schnittstelle, die eine Komponente benötigt um Daten zu erhalten, verändern, löschen, hinzuzufügen, etc. Was genau das Modell kann hängt davon ab, was die Komponente tut. Die TableModel-Schnittstelle unterstützt zum Beispiel das Setzen eines Wertes an einer bestimmten Stelle, da man ja mit einer Tabelle einen Wert in einer Zelle auch verändern kann. Die JList ist eine Komponente, die keine Zeilen hinzufügen kann. Deshalb hat das Interface ListModel auch keine addElement(...)-Methoden.

Für die meisten Modelle (ich glaube sogar für alle) gibt es eine Default-Implementierung; das heißt, eine allgemein nutzbare Klasse die diese Schnittstelle erfüllt. Für das ListModel-Interface gibt es -- wie Du richtig erwähnt hast -- eine DefaultListModel-Implementierung. Die meisten Komponenten (Vorsicht: nicht alle) verwenden diese Default-Implementierung, wenn man Ihnen nichts anderes sagt.

Wenn Du mit dem Default-Konstruktor (das ist der ohne Argumente) eine JList erzeugst, dann hat diese Liste ein Default-Modell. Dein GUI-Builder wird wahrscheinlich sowas in den Code geschrieben haben und nirgends JList.setModel(ListModel) aufrufen:
Code:
new JList();

Wenn dem so ist, dann kannst Du in etwa solchen Code nutzen:
Code:
final ListModel listModel = liste.getModel();
final DefaultListModel defaultListModel = (DefaultListModel) listModel;
defaultListModel.addElement("Schau da bin ich!");

Hilft Dir die Erklärung?

Ebenius
 

Qmark

Mitglied
ziemlich ja, danke dir.
...jedoch leider nur in der theorie, was aber nicht an deiner erklaerkunst, sondern eher an meiner erfahrung mit java liegt.

in der praxis habe ich naemlich einen riesigen haufen automatisch generierten code, darunter dieser hier:
Code:
dieListe = new javax.swing.JList();

jScrollPane1.setViewportView(dieListe); //ich nehme an das ist nur fuer einen scrollbalken, falls benoetigt.
Beide Zeilen sind vom programm her schreibgeschuetzt - die einzige aenderung, die ich vornehmen kann, ist " new javax.swing.JList() " zu aendern oder dazwischen zu schreiben.
Hab da auch schon ein bisschen mit Stuecken aus deinem Code rumprobiert (zB dieListe = new DefaultListModel();), jedoch kann er weder klasse noch konstruktor von DefaultListModel finden.

Wie gelange ich an die Schaetzchen, muss ich irgendwelche files implementieren?
 

Ebenius

Top Contributor
Du musst Klassen importieren. Über der Klassendeklaration
Code:
import javax.swing.DefaultListModel;
import javax.swing.ListModel;

Außerdem kannst Du natürlich nicht das da machen:
Code:
dieListe = new DefaultListModel();
Die Variable dieListe ist ja für die JList-Komponente gedacht und nicht für deren Modell. Du musst auch an der Stelle gar nichts ändern.

Was Du machen musst ist:
Code:
private void goButtonActionPerformed(java.awt.event.ActionEvent evt) {
  final ListModel listModel = dieListe.getModel(); 
  final DefaultListModel defaultListModel = (DefaultListModel) listModel; 
  defaultListModel.addElement(textInZeile);
}

Und dann musst Du Dir ein Buch nehmen und Java-Grundlagen lernen!

Ebenius
 

Qmark

Mitglied
ist auch nicht noetig, ich bin mir der qualitaet meiner fragen schon bewusst ;)

nachdem ich jetzt die beiden klassen importiert (das hab ich gemeint, nicht implementiert) bekomme ich keine compiler errors mehr und ich meine auch verstanden zu haben warum.
aergerlich jedoch: beim Testrun des Programms bekomme ich nicht mehr das Fenster meiner applikation, genausowenig wie bei der anwendung von sun - gestern ging noch beides.
es passiert nur was im output und in den Junit Test Results - aber meine eigentliche anwendung startet nicht.

woran koennte das liegen?
ich kann mich nicht erinnern eine einstellung in der richtung geaendert zu haben...

danke,
qmark

//edit: ei okay das nehm ich alles zurueck. hab die loesung selber, war ne bloede frage:

stattdessen eine, wie ich finde, zumindest bisschen bessere:
waehrend laufendem programm kommt in dieser zeile:
Code:
final DefaultListModel defaultListModel = (DefaultListModel) listModel;
der fehler:
java.lang.ClassCastException: javax.swing.JList$3 cannot be cast to javax.swing.DefaultListModel
 

Ebenius

Top Contributor
Qmark hat gesagt.:
ei okay das nehm ich alles zurueck. bloede frage, hab die loesung selber.

Gut. Wenn das Problem behoben ist, dann bitte Haken setzen.

abhaken.jpg


Ebenius
 

Qmark

Mitglied
leider noch nicht ganz :(

ich zitiere meinen edit:
stattdessen eine, wie ich finde, zumindest bisschen bessere:
waehrend laufendem programm kommt in dieser zeile:

Code:
final DefaultListModel defaultListModel = (DefaultListModel) listModel;

der fehler:
java.lang.ClassCastException: javax.swing.JList$3 cannot be cast to javax.swing.DefaultListModel
 

Ebenius

Top Contributor
Sorry. Dann hab ich nicht nachgesehen... :oops: Die JList benutzt ja doch gar nicht das Default-Model. Also doch zusätzlich noch (nach dieListe = new javax.swing.JList();):
Code:
dieListe.setModel(new DefaultListModel());
 

Qmark

Mitglied
das ist es, das ganze funktioniert.

danke dir vielmals fuer die kompetente hilfe und deine geduld, und auch ein danke fuer den motivierenden applaus aus dem off ;)

haekchen wird gesetzt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Listen in Listen in Listen ... ??? Java Basics - Anfänger-Themen 2
XWing listen Java Basics - Anfänger-Themen 7
FunkyPhil94 addLast und addFirst bei Listen Java Basics - Anfänger-Themen 6
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
Buroto Threads Verschiedene .txt Dateien Auf Listen und Verbinden Java Basics - Anfänger-Themen 3
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
T Collections Sind Subklassen-Objekte in Listen mit Generics erlaubt? Java Basics - Anfänger-Themen 16
S Lineare listen verkettung Java Basics - Anfänger-Themen 7
S Listen Java Basics - Anfänger-Themen 12
S Listen , Nodes am ende anängen Java Basics - Anfänger-Themen 6
P Sortieren von Listen nach Attributen Java Basics - Anfänger-Themen 3
M Java Listen Java Basics - Anfänger-Themen 4
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
A PhoneBook mit verketteten listen Java Basics - Anfänger-Themen 48
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
G Java Listen und Iterator Java Basics - Anfänger-Themen 2
S Erklaerung Listen Java Basics - Anfänger-Themen 27
J Implementierung Listen-ADT Java Basics - Anfänger-Themen 131
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L Skip Listen Java Basics - Anfänger-Themen 5
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
L Wie testet man (selbstgeschriebene) Listen sinnvoll? Java Basics - Anfänger-Themen 2
F Problem mit Listen Java Basics - Anfänger-Themen 5
J Listen Operationen Java Basics - Anfänger-Themen 4
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
J Eine Liste von Listen erstellen Java Basics - Anfänger-Themen 11
A Sortierte Listen Java Basics - Anfänger-Themen 4
L Datenstrukturen/ Listen Java Basics - Anfänger-Themen 17
A Was könnten typische Prüfungsaufgaben zum Thema lineare, verkettete Listen sein? Java Basics - Anfänger-Themen 5
L Listen und Felder Java Basics - Anfänger-Themen 2
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
R Arrays und Listen Java Basics - Anfänger-Themen 1
R Listen richtig implementieren Java Basics - Anfänger-Themen 3
F Multidimensionale Listen Java Basics - Anfänger-Themen 3
F Wie String in unterschiedliche Listen teilen Java Basics - Anfänger-Themen 7
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
T Objekte in Listen vererben Java Basics - Anfänger-Themen 3
A Klassen Klassen und Listen... Java Basics - Anfänger-Themen 5
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
P Listen sortieren mit Binärbaum gibt keine Ausgabe ab 10000 Integern Java Basics - Anfänger-Themen 14
C Listen Java Basics - Anfänger-Themen 3
C Zwei Listen verbinden Java Basics - Anfänger-Themen 1
C Zahlen merken mit Hilfe von Arrays/Listen Java Basics - Anfänger-Themen 2
E Feld von verketteten Listen Java Basics - Anfänger-Themen 11
T Überprüfung einer Aufgabe zu verketteten Listen Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
JarJarBigs Frage zu Listen Java Basics - Anfänger-Themen 2
N verkettete Listen Java Basics - Anfänger-Themen 4
O Listen sort-Methode Java Basics - Anfänger-Themen 1
I Listen sortieren bei mehreren Listen zu einer Java Basics - Anfänger-Themen 2
L Lineare Listen Java Basics - Anfänger-Themen 2
S Listen Objekte nach LocalDateTime sortieren Java Basics - Anfänger-Themen 2
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
A Sichtbarkeit in Methoden/Listen Java Basics - Anfänger-Themen 3
M verkettete Listen Java Basics - Anfänger-Themen 1
D Klausur Vorbereitung: Listen, Rekursion, Bäume & Vererbung Java Basics - Anfänger-Themen 3
S Vergleich von Listen Java Basics - Anfänger-Themen 6
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 2
M Listen erstellen mit unterschiedlichen Reihenfolgen Java Basics - Anfänger-Themen 3
I Zwei Listen vergleichen bei n:m Beziehung Java Basics - Anfänger-Themen 2
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K Interface Generics, Interfaces und Listen - ich bin verwirrt. Java Basics - Anfänger-Themen 7
L Best Practice Alle Kombinationen aus Listenelementen, Anzahl Listen unterschiedlich Java Basics - Anfänger-Themen 6
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
S Unsortierte Listen - Frage zur "Verkettung" Java Basics - Anfänger-Themen 1
I Zwei Listen vergleichen Java Basics - Anfänger-Themen 7
I Listen, for - Schleifen Java Basics - Anfänger-Themen 8
P Listen Size stimmt nicht Java Basics - Anfänger-Themen 5
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5
L Collections Objekte in Listen speichern Java Basics - Anfänger-Themen 3
G 2 Listen kombinieren und nach abc sortieren Java Basics - Anfänger-Themen 9
D Annonyme Innere Klasse: Listen mit geradem Index ausgeben Java Basics - Anfänger-Themen 6
G Listen sortieren Java Basics - Anfänger-Themen 3
G Generic und Listen Java Basics - Anfänger-Themen 8
R SQL ähnlicher Filter für Java Listen Java Basics - Anfänger-Themen 2
Y Collections 4 Listen Java Basics - Anfänger-Themen 14
S OOP/ Listen...etc... Java Basics - Anfänger-Themen 14
E Listen Java Basics - Anfänger-Themen 2
V Methoden Verkettete Listen Index eines Elementes ausgeben Java Basics - Anfänger-Themen 10
B Listen Java Basics - Anfänger-Themen 3
B eigene klasse in listen eintragen Java Basics - Anfänger-Themen 6
B Map per Listen Java Basics - Anfänger-Themen 2
S Erfahrungswerte von schnelles durchlaufen von Listen mit 2 Werten Java Basics - Anfänger-Themen 10
Joew0815 Problem mit Listen: add() Java Basics - Anfänger-Themen 11
P Zeichenorientierte & Serialisierte Datenverarbeitung Listen Java Basics - Anfänger-Themen 8
E Listen und Generics Java Basics - Anfänger-Themen 9
L dynamisches erzeugen von array Listen Java Basics - Anfänger-Themen 7
E Listen und Duplikate Java Basics - Anfänger-Themen 2
R Hilfe bei Listen Java Basics - Anfänger-Themen 10
F Collections Liste von Listen Java Basics - Anfänger-Themen 21
A Methoden Anfängerfrage: 2 Listen Vergleichen Java Basics - Anfänger-Themen 7
walker23m C++ Listen iteratoren in Java umwandeln Java Basics - Anfänger-Themen 3
X Listen und verschiedene Methoden Java Basics - Anfänger-Themen 6
N Listen Java Basics - Anfänger-Themen 5
S Listen Klasse selbst schreiben Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben