JList füllen mit LinkedList-Elementen

Status
Nicht offen für weitere Antworten.

Fabian030

Mitglied
ich hab ein klassisches MVC aufgebaut.

im model hab ich meine LinkedList mit Kundendaten (Kundennummer und Kundenname)
und eine methode

public void kundenAusgeben() {
String alleKunden = null;
for (Kunde i : kundenListe) {
alleKunden += ""+i + "\n";
}
if (alleKunden == null){
controlString = "keine Kunden vorhanden";
fireModelEvent2(new ModelEvent(this));
}
else {
lastString = ""+alleKunden;
fireModelEvent(new ModelEvent(this));
}
}

controlString und lastString werden über return-String-Methoden zurückgegeben.


im Controller sieht der dazugehörige aufruf dann so aus:

if(e.getActionCommand().equals(Mete2View.KUNDEN)){
((Mete2Model)getModel()).kundenAusgeben();
}


und in der View passiert dann das:
JTextArea texfeld = new JTextArea(10, 100);

public void modelChanged(ModelEvent e) {
textfeld.setText((((Mete2Model) getMvcModel()).getLastString()));
textfeld.setText((((Mete2Model) getMvcModel()).getControlString()));
}

----------------

klappt super mit dem JTextArea

nun will ich aber den inhalt aus der LinkedList (also die Kundennummer und den Kundennamen) in ner JList darstellen (um dann später auf einen eintrag zu klicken und das was für den eintrag in einer anderen klasse - in einer hashmap - gespeichert wurde in einem zweiten JList anzuzeigen)

hat jemand ne idee wie das funktioniert? :/
JList mag nur Object[]-Datentypen aufnehmen und keine Strings oder gar meine ganze LinkedList ;)
 

0001001

Bekanntes Mitglied
Das ist eigentlich ganz einfach.
Zwei Möglichkeiten:
1. du schreibst dir ne Methode, die aus deiner LinkedList ein DefaultListModel macht und das dann der JList zuweist. Also einfach mit ner Schleife über alle Einträge der LinkedList laufen und jeden Eintrag dem DefaultListModel zuweisen. Am Schluss übergibst du das Model dann der JList mit der Methode setModel(deinModel);

2. Du erweiterst das DefaultListmodel und überschreibst die Methoden dort und fügst ne neue Methode hinzu die mit ner LinkedList umgehen kann.
 
G

Gast2

Gast
Java:
//1. Möglichkeit
JCombobox box = new JCombobox(LinkedList#toArray())
//2te
box.setModel(new DefaultComboboxModel(LinkedList#toArray()))

Eventuell brauchst du aber einen eigenen Renderer für die Combobox
 

Fabian030

Mitglied
keine Ahnung, was mir da die Combobox bei ner JList helfen soll ... also im Moment noch nicht.
Aber die Sache mit dem DefaultListModel scheint interessant.
Ich werde mal schauen, ob ich meine LinkedList da reinpacken kann ...



Java:
public DefaultListModel getKunde(){
DefaultListModel kunden = null; 
for (Kunde i : kundenListe) {
//TODO ???
}
return kunden;
}
 

0001001

Bekanntes Mitglied
Code:
public DefaultListModel getKunde(){
DefaultListModel kunden = null; 
int counter = 0;
for (Kunde kunde : kundenListe) {
kunden.add(counter, kunde);
counter++;
}
return kunden;
}
 

Fabian030

Mitglied
eine mögliche Lösung:

View:
unter modelChanged(Event e){
kundenListe.setListData((((Mete2Model) getMvcModel()).getKunden().toArray()));
}

Model:
public LinkedList <Kunde> getKunden(){
LinkedList<Kunde> kunden = kundenListe;
return kunden;
}


Frage wäre jetzt, ob ich mit nem ActionListener auf die Elemente in der JList auch rausfinden kann, was hinter den Einträgen für diese Einträge gespeichert ist ...

aber danke soweit für die Hilfe. :D
:toll:
 

Fabian030

Mitglied
Code:
public DefaultListModel getKunde(){
DefaultListModel kunden = null; 
int counter = 0;
for (Kunde kunde : kundenListe) {
kunden.add(counter, kunde);
counter++;
}
return kunden;
}

@kunden.add(counter, kunde); // ===> kunden ist an dieser Position immer NULL und er spuckt somit immer n fehler aus beim ausführen - natürlich eine Null-Pointer-Exception.
 
G

Gast2

Gast
Sorry falsch gelesen, aber die Lösung stand doch trotzdem so gut wie da????
???:L???:L

Java:
//
JList list = new JList(LinkedList.toArray());

list.setListData(LinkedList.toArray())
 
Zuletzt bearbeitet von einem Moderator:
G

Gast2

Gast
1. Was ist das Problem wenn du die von mir genannten varianten nimmst???? musst doch nicht selber dein model füllen...
2. wie wärs mit DefaultListModel kunden = new DefaultListModel (); :):)
brauchst ja auch erstmal eine Instanz oder ;)
 

Fabian030

Mitglied
1. Was ist das Problem wenn du die von mir genannten varianten nimmst???? musst doch nicht selber dein model füllen...
2. wie wärs mit DefaultListModel kunden = new DefaultListModel (); :):)
brauchst ja auch erstmal eine Instanz oder ;)

@1: keins. ich hab ja jetzt deine einfache lösung genutzt :oops:
public LinkedList<Kunde> getListe(){
return kundenListe;
}

und in der view sag ich einfach:
kundenListe.setListData((((Mete2Model) getMvcModel()).getListe().toArray()));
(kundenListe ist die JList)

2. super idee. ich seh den wald vor lauter bäumen nicht mehr ... ;( (PS: siehe oben, es geht auch einfacher. ich glaub nicht, dass mir das DefaultListModel irgendwelche vorteile bringt, eh?)
 
G

Gast2

Gast
Die Methode nimmt intern auch ein DefaultListModel ;)... Nur dass du das füllen nicht übernehmen musst.Also passt es so schon...
Java:
kundenListe.setListData((((Mete2Model) getMvcModel()).getListe().toArray()));
 

Fabian030

Mitglied
Die Methode nimmt intern auch ein DefaultListModel ;)... Nur dass du das füllen nicht übernehmen musst.Also passt es so schon...

achso? na das wusst ich nicht. :) man lernt ja immer wieder dazu, deswegen sind wir hier :rtfm:

ich häng inzwischen an dem zweiten problem, dass ich eben ein eintrag der liste selektieren soll und dazugehörige werte auf einer zweiten JList ausgegeben werden sollen.
die sind in ner HashMap gespeichert ...
aber hier gibt's ständig cast-probleme oder er mag meinen ListSelectionListener nicht und und und. :/

View:
Java:
ListSelectionListener listListener;

kundenListe.addListSelectionListener(listListener);

@Override
public void valueChanged(ListSelectionEvent event) {
	Kunde k = (Kunde)kundenListe.getSelectedValue();
	kontenListe.setListData((k.getKonten());
}

Klasse Kunde:
Java:
private HashMap <Integer, Konto> meineKonten = new HashMap <Integer, Konto> ();

public  HashMap<Integer, Konto> getKonten(){
	return meineKonten;
}

fehler bei setListData - und wenn ich wieder ein .ToArray() anhänge, will er kunde K casten in ne List oder LinkedList ... :bahnhof:
 
G

Gast2

Gast
achso? na das wusst ich nicht. :) man lernt ja immer wieder dazu, deswegen sind wir hier :rtfm:
oh stimmt gar net der nimmt ein AbstractListModel... aber passt scho :D

mehr code??kompilierbares Bsp???

Was soll den das hier? Muss doch ein compile Fehler sein...
Java:
kontenListe.setListData((k.getKonten());


EDIT:
suchst du das hier?
Java:
k.getKonten().values().toArray();
 
Zuletzt bearbeitet von einem Moderator:

Fabian030

Mitglied
musste ja einen compiler-fehler geben, sagte ich ja. :)

letzteres dürfte sein, was ich gesucht habe ...
allerdings
Java:
public void valueChanged(ListSelectionEvent event) {
	Kunde k = (Kunde)kundenListe.getSelectedValue();
	System.out.println("kunde: "+k);
	kontenListe.setListData(k.getKonten().values().toArray());
}

System.out.println("kunde: "+k);
wird nie erreicht. der listener schlägt anscheinend fehl und somit wird auch nie die valueChanged von der JList angeschupst.

View:
Java:
ListSelectionListener listListener;
...
...
kundenListe = new JList();
kundenListe.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
kundenListe.setLayoutOrientation(JList.VERTICAL);
kundenListe.setVisibleRowCount(-1);
kundenListe.addListSelectionListener(listListener);
JScrollPane kundenScroll = new JScrollPane(kundenListe);
kundenScroll.setPreferredSize(new Dimension(350, 120));
gridBag.setConstraints(kundenScroll, constr);
container.add(kundenScroll);

@kompilierbarer code: ich könnt dir das ganze programm rüberschicken, aber es hier zu posten würde wohl jeden rahmen sprengen. es sind 14 klassen und 8 weitere UI.mvc-klassen damit das MVC funktioniert ... ^^

:oops:
 
G

Gast2

Gast
ja und du sollst ein kleines ding machen wo der effekt auftritt da brauchst du kein MVC das sind net mehr wie 100 zeilen code...
 

Fabian030

Mitglied
da magst du recht haben.
deswegen is ja die valueChanged, der ListSelectionListener und das dazugehörige zeug jetzt der einfachheit halber in der view.
das sollte den ja nicht stören und sollte dort auch aufgerufen werden können. ^^
 

Fabian030

Mitglied
naja, setze mir als erstes den ListSelectionListener
dann hab ich meine Liste die die Kunden anzeigt und setze für die den listListener dachte ich, denn auf die soll ja "gelauscht" werden bei Änderungen ...
ich hab der kontenListe, wo die daten der kunden angezeigt werden sollen auch noch den listListener spendiert

und dann dacht ich, dass die valueChanged() automatisch ausgeführt wird, sobald ich n listenelement aus der JList kundenListe auswähle/anklicke ...

Java:
ListSelectionListener listListener;
...
kundenListe.addListSelectionListener(listListener);
...
kontenListe.addListSelectionListener(listListener);
...
...
public void valueChanged(ListSelectionEvent event) {
	Kunde k = (Kunde)kundenListe.getSelectedValue();
	System.out.println("kunde: "+k);
	kontenListe.setListData(k.getKonten().values().toArray());
}

oder seh ich das falsch? aber so hab ich das prinzip des ListSelectionListeners verstanden ... :/
 
G

Gast2

Gast
Mach doch einfach ein kurzes Beispiel, dann hättest du schon längst die Antwort...
 

Fabian030

Mitglied
Mach doch einfach ein kurzes Beispiel, dann hättest du schon längst die Antwort...

tadaaaa ...
es geht. xD

Java:
		kundenListe.addListSelectionListener(new ListSelectionListener() { 
			public void valueChanged(ListSelectionEvent e) {
				if (e.getValueIsAdjusting() == false) {
					if (kundenListe.getSelectedIndex() == -1) {
						System.out.println("kein Kunde gewählt.");
					} else {
						Kunde k = (Kunde)kundenListe.getSelectedValue();
						System.out.println("kunde: "+k);
						aktuellerKunde = k;
				        //einKunde = new JMenuItem("einen Kunden waehlen");
				        //einKunde.addActionListener((ActionListener) getController());
				        //einKunde.setActionCommand(Mete2View.EINKUNDE);
						kontenListe.setListData(k.getKonten().values().toArray());
					}
				}
			} } );;

die System.outs sind nur kontrollausgaben für mich ...

danke für die bisherige Hilfe. ich komm wieder auf euch zurück ;)

:toll::toll:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Jlist füllen AWT, Swing, JavaFX & SWT 4
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
M JList mit 2-zeiligen Objekten füllen AWT, Swing, JavaFX & SWT 7
C JList mit Vector füllen AWT, Swing, JavaFX & SWT 3
C JList: Eintrag anklicken & JTextfield mit Text aus MySQL füllen? (Screenshot dabei) AWT, Swing, JavaFX & SWT 8
M JList: wie füllen? AWT, Swing, JavaFX & SWT 2
G jList mit ArrayList füllen AWT, Swing, JavaFX & SWT 3
A Beim Füllen von JList entsteht ein komisches Phänomen AWT, Swing, JavaFX & SWT 3
M JList mit unbestimmter Anzahl Panels füllen AWT, Swing, JavaFX & SWT 4
G JList mit Daten füllen wie die normale DOS-Konsole AWT, Swing, JavaFX & SWT 2
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
BananenBrötchen Swing Arraylist in jList anzeigen AWT, Swing, JavaFX & SWT 6
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
J JList scrollen AWT, Swing, JavaFX & SWT 3
Neumi5694 Swing JList - Klick abfangen AWT, Swing, JavaFX & SWT 3
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
F JList aktualisiert nicht AWT, Swing, JavaFX & SWT 24
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
F JList bei Windowbuilder AWT, Swing, JavaFX & SWT 8
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
P JList erstellen AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
T Swing WindowBuilder: JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JList wird angezeigt, JTable (DefaultTableModel) nicht AWT, Swing, JavaFX & SWT 7
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
Q JList Update Problem AWT, Swing, JavaFX & SWT 1
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
N AWT Markierte Zeile jList aus mySQL DB löschen AWT, Swing, JavaFX & SWT 2
S JList repaint AWT, Swing, JavaFX & SWT 1
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
H JList AWT, Swing, JavaFX & SWT 5
B Swing Bild von Webseite herunterladen, diese dann in JList anzeigen. AWT, Swing, JavaFX & SWT 1
B Swing Dynamische JList mit Bildern AWT, Swing, JavaFX & SWT 4
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
S JList Index finden AWT, Swing, JavaFX & SWT 6
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
N JComponenten in JList oder doch anders? AWT, Swing, JavaFX & SWT 0
S Swing JList, ArrayList + DefaultModel AWT, Swing, JavaFX & SWT 5
B Tabelleneinträge in JList anzeigen AWT, Swing, JavaFX & SWT 5
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
M JList Model filtern AWT, Swing, JavaFX & SWT 4
K Swing JList - Element richtig hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Elemente der JList überlappend darstellen AWT, Swing, JavaFX & SWT 5
P Swing JList mit Objekten - Name anzeigen AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
K Mehrfachselektierungen in einer JList AWT, Swing, JavaFX & SWT 6
L Swing Component alignment innerhalb einer JList AWT, Swing, JavaFX & SWT 3
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
M Accelerator zu JMenuItem des JPopupMenu einer JList AWT, Swing, JavaFX & SWT 2
S Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
E selektierter Datensatz in JList als String Datentyp AWT, Swing, JavaFX & SWT 23
E selektiertes Element aus JList zurückgeben AWT, Swing, JavaFX & SWT 7
E JList /DefaultListModel mit Datenbank verbinden AWT, Swing, JavaFX & SWT 10
L SQL & Jtable o. JList AWT, Swing, JavaFX & SWT 5
K Swing JList und veränderte CellRenderer AWT, Swing, JavaFX & SWT 8
B JList + ListCellRenderer AWT, Swing, JavaFX & SWT 5
B JList -> Disabled AWT, Swing, JavaFX & SWT 6
J JList, Anzeige aktualisieren AWT, Swing, JavaFX & SWT 7
I Jlist isselectionEmpty AWT, Swing, JavaFX & SWT 4
R Swing unbegrenzte Anzahl vonEinträgen in JList AWT, Swing, JavaFX & SWT 2
MiMa Dateien aus Ordner in einer JList Ausgeben AWT, Swing, JavaFX & SWT 32
P Elemente einer JList ausgeben AWT, Swing, JavaFX & SWT 11
S JList mit Einträgen versehen schlägt fehl AWT, Swing, JavaFX & SWT 4
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
B JList zeigt Elemente nicht an AWT, Swing, JavaFX & SWT 3
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
B Aktualisierung einer JList AWT, Swing, JavaFX & SWT 5
W JList valueChanges weiterleiten? AWT, Swing, JavaFX & SWT 14
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
E Jlist nur mit Klasse? AWT, Swing, JavaFX & SWT 5
D Swing JList <-> AdapterModel <-> Model AWT, Swing, JavaFX & SWT 4
1 JList - Elemente mit rechter Maustaste wählen AWT, Swing, JavaFX & SWT 6
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
B JList nach dem Rendern sortieren AWT, Swing, JavaFX & SWT 3
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
D JList items voneinander trennen AWT, Swing, JavaFX & SWT 10
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben