JList - mehrspaltig

Spider2618

Grünschnabel
Hey!

-Ich möchte eine dynamisch zu füllende JList haben und:
-bei Auswahl eines Namens die ID in die Datenbank speichern.

Daher:
Aus einer Datenbank sollen je Element der Liste 2 Einträge (z.B. Kunden-ID und Kunden-Name) vorhanden sein.

Wie geht das?

Schon ein eingefügtes 2-elementiges Array läßt sich nicht über das Model-Object auslesen.

(Datenbank-Anbindung, SQL etc. sind klar, DefaultListModel für das dynamische Befüllen verwendet)

Gruß
 
Hi,

falls Du nicht ohnehin bereits eine Lösung für Dein Problem gefunden hast (ich bin spät...), hier mein Vorschlag (wenn ich Dich richtig verstanden habe, möchtest Du ja pro Listeneintrag den Id aus der Kundentab "unsichtbar" mitspeichern (und somit bleibt Deine Frage wenigstens nicht unbeantwortet, auch wenns nur symbolischen Charakter hat):

class CModel extends DefaultListModel{
ArrayList a = new ArrayList();

public void addEntry(int id, String name){
super.addElement(name);
a.add(new Integer(id));
}

public void insertEntry(int index, int id, String name){
super.add(index, name);
a.add(index, new Integer(id));
}

public int getId(int index){
return Integer.valueOf(a.get(index).toString()).intValue();
}
}


// ANWENDUNG:
// (Daten über JDBC auslesen)

Primary Key aus Kundentabelle -> 666
Name aus Kundentabelle: -> "Luzifer GmbH"

// Daten in GUI verarbeiten

CModel model = new CModel();
model.addEntry(666, "Luzifer GmbH");

JList list = new JList(model);

// Primary Key des 1. Tabelleneintrags holen

System.out.println("ID: " + model.getId(0));

// In echter Applikation natürlich so:

model.getId(list.getSelectionModel().getMinSelectionIndex());



Cheers,

Snake
 
Zuletzt bearbeitet:
Warte,

falls man einen Eintrag löschen möchte, fehlt der CModel-Klasse natürlich noch diese Methode:

public void deleteEntry(int index){
super.removeElementAt(index);
a.remove(index);
}

...und wenn man die ganze Liste löschen möchte
public void deleteAllEntries(){
super.removeAllElements();
a.clear();
}

ansonsten CModel neu initialisieren und der JList zuweisen


Die Klapperschlange
 
Hallo Snake!

Hab zwar ´nen Workaround gefunden, aber das ist natürlich viel eleganter. Wußte nicht, wie man das Model ausbaut.

Vielen Dank.

Gruß
Spider

P.S. Toller Film übrigens: Die Klapperschlange ( Snake Plessken) 1981
 
Hey!

Zugriff auf den Inhalt der Liste dann z.B. (ohne Umwege über Model)
durch:

System.out.println("ID: " + ((CModel)list.getModel()).getId(0));

Gruß

Spider
 
Zurück