Java: Datenbank-Tabelle -> JTable?

st3-f

st3-f

Mitglied
Thread Starter
Dabei seit
22.12.2006
Beiträge
61
Reaktionspunkte
0
Hallo an alle!

Meine letzte Frage war, wie ich eine Datenbankverbindung am besten herstelle, das ist mir dank eurer Hilfe gelungen, nun habe ich das nächste Problem, ich glaube ich bin einfach zu doof dafür, da ich schon ein paar Tage daran rummache!

Also, ich hab die Datenbank und frage Daten ab - alles kein Problem. Nun möchte ich die Daten in einer JTable ausgeben. Erst habe ich es so gemacht, dass ich eine JTable mit leeren Strings gefüllt habe und dann nachträglich die Daten mit

Code:
table.setValueAt()

eingefügt, das ging auch. Aber wirklich sinnvoll ist es ja nicht, da ich ja sonst immer eine Menge leerer Tabelenzellen habe am Anfang und die Tabelle nicht dynamisch gefüllt wird. Nun habe ich schon Google gequält und einige Sachen gefunden/gelesen, die mir aber nicht wirklich weiterhelfen, da ich das einfach nicht kapiere.

1. Ein eigenes TableModel - hab ich gemacht, die Tabelle wird automatisch erzeugt mit der richtigen Anzahl an Zeilen/Spalten, aber mit setValueAt stehen keine Einträge drin.

2. Ich habe etwas gefunden, das da heisst QueryTableModel, um dieses zu benutzen müsste ich wohl einen Großteil des Programms umschreiben, wenn es nicht anders geht werde ich das auch machen, aber mir wäre es anders natürlich lieber.

Hat von euch schon jemand Erfahrung damit gemacht und kann mir einen Tipp geben? Bin über jede Hilfe dankbar, auch Links zu Tutorials oder dergleichen, wo ich es selbst nachlesen kann würden mich erfreuen.

In diesem Sinne, Grüsse aus London

st3-f
 
Eine einfache Möglichkeit ist es das Model über die Methode setDataVector zu füllen... Beispiel: (Angenommen deine Tabelle heißt jTable1)

javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)jTable1.getModel();
dtm.setDataVector(vector1, vector2);

Am besten liest du dir mal die API beschreibung zu der Methode durch, dann solltest du schon eine gute Idee haben, wie du das machst und was die 2 Vectoren enthalten müssen. ;)
 
Zuletzt bearbeitet:
Poste bitte mal wie setValueAt() bei deinem eigenen Tablemodel aussieht. Hast du firetablerowsupdated ausgeführt?

Edit: aja, du darfst beim eigenen Tablemodel nicht table.setValueAt() machen, sondern du musst table.getModel().setValueAt(...) machen.
 
Poste bitte mal wie setValueAt() bei deinem eigenen Tablemodel aussieht. Hast du firetablerowsupdated ausgeführt?

Edit: aja, du darfst beim eigenen Tablemodel nicht table.setValueAt() machen, sondern du musst table.getModel().setValueAt(...) machen.

Hm ... das werde ich zu Hause gleich mal versuchen - hab das Programm leider nicht dabei und zu Hause kein Internet, vielen Dank schonmal fuer den Tipp!!!


cynic schrieb:
Eine einfache Möglichkeit ist es das Model über die Methode setDataVector zu füllen... Beispiel: (Angenommen deine Tabelle heißt jTable1)

javax.swing.table.DefaultTableModel dtm = (javax.swing.table.DefaultTableModel)jTa ble1.getModel();
dtm.setDataVector(vector1, vector2);

Am besten liest du dir mal die API beschreibung zu der Methode durch, dann solltest du schon eine gute Idee haben, wie du das machst und was die 2 Vectoren enthalten müssen.

Auch Danke fuer diesen Tipp, werde ich mir auch mal anschauen, hoert sich interessant an! Ich melde mich morgen wieder, ob / und / oder was funktioniert hat! ;-)

Gruesse aus London
st3-f
 
So, da bin ich mal wieder. Ich hab mich gestern nochmals mit dem Thema beschafft und habe nun eine Lösung mit einem eigenen TableResultsModel. Das heisst:
Auf Basis des ResultSets der Datenbank-Abfrage wird das TabellenModel erzeugt und die Tabelle wird angezeigt. Ging eigentlich relativ einfach ... so im Nachhinein, hab es in einem Buch gefunden und etwas angepasst.

Vielen Dank dennoch für die Tipps. Das mit table.getModel().setValueAt(..) hat bei mir leider nicht funktioniert, warum auch immer, aber jetzt geht es ja.

Danke und Grüsse

st3-f
 
Super, dass du dir eine Lösung erarbeitet hast, noch weiterhin viel Spaß! :)
 
Super, dass du dir eine Lösung erarbeitet hast, noch weiterhin viel Spaß! :)

Thx. Freue mich auch über eine "eigene" Lösung. Da macht es doch gleich viel mehr Spass weiterzumachen! :) Bin auch richtig stolz auf mich!

st3-f
 
Zurück
Oben Unten