Datenbank und Swing

lizzi1

Grünschnabel
hallo zusammen

ich bräuchte mal eure hilfe. ich habe ein java-projekt, eine gui mit swing und datenbankanbindung mit jdbc. im gui möchte ich eine liste erzeugen, welche daten aus der db auslist und auflistet. wie kann ich das am elegantesten lösen, wenn ich gui und db-anbindung in separaten klassen haben möchte? (also nicht die db vom gui aus auslesen, sondern zuerst die daten in ein array oder so auslesen und das array dann in der liste anzeigen) ich habs mit array-list und jlist versucht, kann aber in der jlist keine arraylist einfügen. gibt was besseres als arraylist oder was besseres als jlist?

vielen dank zum voraus
lizzi
 
lizzi1 hat gesagt.:
hallo zusammen
jlist keine arraylist einfügen?
lizzi

Kannst deine Daten in einen Vector packen und dann mit:

Code:
deineJList.setListData(kategorien);

das ganze deine Liste übergeben.

Deine Daten aus der DB bekommst du ja innem ResultSet zurück, könntest natürlich auch ne Schleife bauen, die dir dein Result Set ausließt und das dann direkt in die JList schreiben (um die Schleife wirst du ohnehin nicht drum herum kommen bei meiner Variante, da du die Inhalte aus dem ResultSet durch die Schleife ja in den Vector schreiben muss)

Mfg
Dom

Was soll der Geiz, hab das im meinem derzeitigen Projekt ja eh gerade hier:

Einfügen der Werte in den Vector und Übergabe (fehlt nur das try-catch drum)
Code:
while (rs.next()) 
			{
				meineJList.add(rs.getString(1));
			}
meineJList.setListData(kategorien);
 
Zuletzt bearbeitet:
danke, werde das mit dem vector versuchen.

in der literatur steht zwar, man soll arraylisten statt vectoren verwenden, aber die arraylist krieg ich nicht so einfach in die jlist wie den vector.
 
Hallo Lizzi1,

wenn du deine Datenbankzugriffe in einer anderen Klasse hast, könnte deine Anwendung so aussehen:

1. definiere dir ein Arry z. Beispiel tAusgaben

Object[][] tAusgaben = null;
// Start neue Spalte 12.1.06 - zusätzliche Tabellenüberschrift
// Tabellenüberschriften festlegen
String columnNames[] = { "Schlüssel", "Budat", "Warengruppe", "Betrag",
"Text", "angelegt", "geändert" };

2. füll das Array mit den Inhalten aus deiner Datenbank
tAusgaben = DatenbankAufrufe.getInstance().HolAlleAusgaben(
GlobaleDaten.sHIText);
3. definiere eine GUI Tabelle und fülle diese mit den Array Daten
// Tabelle für die Anzeige am Bildschirm definieren
final JTable table = new JTable(tAusgaben, columnNames);
table.setRowSelectionAllowed(false);
table.setRowSelectionAllowed(false);

4. Danach kannst du noch die Breite deiner Spalten bestimmen
// Breite der ersten Spalte Nummer Warengruppe setzen
TableColumn col = table.getColumnModel().getColumn(0);
col.setPreferredWidth(150);

// Breite der zweiten Spalte setzen (Bezeichnung)
TableColumn col1 = table.getColumnModel().getColumn(1);
col1.setPreferredWidth(150);

// Nummer des angezeigten Satzes (Datum angelegt)
TableColumn col2 = table.getColumnModel().getColumn(2);
col2.setPreferredWidth(150);

TableColumn col3 = table.getColumnModel().getColumn(3);
col3.setPreferredWidth(500);

TableColumn col4 = table.getColumnModel().getColumn(4);
col4.setPreferredWidth(150);

TableColumn col5 = table.getColumnModel().getColumn(5);
col5.setPreferredWidth(150);

Viel Spass dabei

Harald
 
lizzi1 hat gesagt.:
danke, werde das mit dem vector versuchen.

in der literatur steht zwar, man soll arraylisten statt vectoren verwenden, aber die arraylist krieg ich nicht so einfach in die jlist wie den vector.

Ja das ist in Java so eine Sache, was da alles sonderbares empfohlen wird!
Der Grund der Empfehlung bei Vectoren und Arraylisten ist der, dass ArrayList nicht synchronisiert ist, und damit minimal schneller in der Ausführung. Synchronisiert bedeutet, dass Threads an der synchronisierten Methode warten bis quasi die Bahn frei ist, also kein thread dort in Ausführung ist. Deiser Mechanismus kostet halt ein wenig. Leider sind jedoch die allermeisten Klassen in den Framworks von Java nicht auf Arralisten sondern auf Vectoren scharf, wie du selbst bemerkt hast. In anderen Worten diei Empfehlung taug nicht arg viel. Arralisen kann man also nur für eigene Dinge verwenden, sobald man mit den standard Java-Framworks arbeitet hat man da wieder einen Bruch, der würde man dann alles wieder in Vectoren packen eher Zeit verschwendet, nähmlich wegen der Übertragung von Arraylist auf Vector und gegebenenfalls zurück :-(

in diesem Sinne

Takidoso
 
Zurück