Java JTable ansprechen

xSeppelx

Lt. Junior Grade
Registriert
Sep. 2009
Beiträge
384
Hi,

ich bin gerade am lösen einer Aufgabe und muss dazu ein JTable füllen.
Das habe ich schon erledigt.

Ich muss jetzt quasi zur Laufzeit das JTable ändern, resetten usw.

Wie sollte man da vorgehen?
Eine eigene JTable Klasse die von außen mit gettern und Settern gefüttert werden kann?

Oder wie würdet ihr das sauber lösen?

Derzeit steht die JTable bei mir in einem JFrame.(Das JTable hat noch eine Scrollbar JScrollPane)
Sie wird über eine andere Klasse mit einem Object[][](Daten) und einen String-Array(Bezeichner) gefüttert.

Ich will die Tabelle jetzt quasi Zurücksetzen können und Änderungen vornehmen können.
 
Zuletzt bearbeitet:
Du musst dir doch nur beim Erstellen der JTable eine Referenz darauf aufheben (z.B. als Attribut in deinem JFrame), dann kannst du mit setValueAt() verändern, was du willst. Oder habe ich deine Frage falsch verstanden? :confused_alt:
 
Code:
table = new JTable(control.getVornamenDataForTable(),control.getcolumnName());
So wird mein JTable instantiiert.
Ich holle aus einem Control-Objekt eine Object[][]-Array und eben die Column-Beschriftung.

Jetzt möchte ich hingehen und zur Laufzeit eine Funktion aufrufen mit der ich die Tabelle löschen kann, sollte mit removeAll() gehen und dann wieder mit den Daten von oben füllen!

Später möchte ich dann andere Daten anstelle dessen hinzufügen.

edit:

Brauche ich so ein TableModel wirklich?

edit1:

Okay ich glaube ich kreige das soweit hin ;)

Jetzt muss ich erst mal das ganze umsetzen.
Hab aber gerade ein anders Problem.
Mein ActionListener braucht jetzt Zugriff auf den Controller, aber den ActionListener erzeuge ich im Controller, da kann ich schwer einen Verweis übergeben.
 
Zuletzt bearbeitet:
Das TableModel verwendest du immer. Wenn du den Object[][] Konstruktor verwendest, dann wird intern ein TableModel erzeugt. Die daten dafür werden aus dem Object[][] gelesen.

Befasse dich erst mal damit wie Swing grundsätzlich funktioniert.
Kurz: Im Model werden die Daten gehalten, eine andere Komponente (hier die JTable) stellt sie dar.
Das findest du immer wieder, und hat den Vorteil, dass du die selben Daten durch unterschiedliche Komponenten darstellen lassen kannst, dabei Konsistenz gewährleistet ist.

Generell kann ich dir nur empfehlen die Java Dokumentation zu lesen, bevor du etwas entwickelst. Sonst kommt mit höchster Wahrscheinlichkeit etwas chaotisches dabei heraus.
Es gibt gerade bei Java eine sehr ausführliche Dokumentation, und eine riesige Reihe an Tutorials.
Davon solltest du mindestens mal die JTable Dokumentation lesen, und das was du aus dem JTable Tutorial benötigen kannst.
 
Habs das JTable Problem quasi gelöst.
Man muss nur wissen wo man nachschlägt ;)

Ich muss jetzt nur noch mein Instantiierungsproblem im Controller beheben.

edit:
RemoveAll geht leider nicht.
Eine Möglichkeit wäre alles auf Leer zu setzen, aber dann sieht man das ja.
Das TableModel gibt doch nichts anderes her als set?
Kann ich über die Table nicht die ganzen Spalten und Reihen löschen?

edit1:
Habs gelöst.
Da ich die Daten ja nur leere und danach neu fülle ist es ja kein Thema.
Problematisch wird es erst wenn ich weniger Daten habe und dann leere Zeilen sind.

Kann geschlossen werden.
 
Zuletzt bearbeitet:
Zurück
Oben