Tabelle automatisch aktualisieren wenn sich im Vektor gespeicherte Daten ändern

Nesaja

Grünschnabel
Hallo,

ich hoffe das Thema gabs noch nicht, ich habe leider nichts gefunden gehabt.

Ich habe eine JTable, die ihre Daten aus zwei Vektoren (x und y) bezieht. Diese werden wiederrum mit Daten befüllt, die in einem anderen Vektor (z) gespeichert sind.

Ich hoffe das war bisher verständlich.

Nun möchte ich, sobald im Vektor z ein Element hinzugefügt, oder gelöscht wird dass sich auch die Tabelle (die ja aus Daten von z besteht) sich aktualisiert, aber auch sobald ich eine Zeile aus der Tabelle lösche (was anderes geht nicht) das entsprechende Element aus dem Vektor z gelöscht wird.

Mein Professor meinte, dass ich das mit einem AbstractTableModel umsetzen muss, damit es so funktioniert. Nun ist bei mir aber das Problem, dass ich nicht so ganz weiß wie ich das umsetzen soll. Habe da irgendwie noch nen Knoten im Kopf :(

Bisher gleich ich die Zeilen und Daten im Vektor "manuell" ab, aber das empfindet mein Professor nicht als die Ideal-Lösung.

Kann mir jemand vielleicht einen Tipp geben wie ich das am besten anpacke?

Wäre superlieb, wenn mir jemand helfen könnte. Wenn ihr meine Beschreibung nicht verstanden habt, versuche ichs nochmal anders.

Vielen Dank schonmal
Nesaja
 
So, ich bin jetzt ein ganzes Stückchen weitergekommen, jedoch will mir einfach nicht in den Kopf, was die Methode getValueAt(int row, int col) macht.

Okay, sie gibt den Inhalt einer spezifischen Zeile aus.
Macht Sie das beim allerersten Aufbau gleich?
Ruft sie beim TabellenAufbau jede einzelne Zelle ab, also als erstes 0,0 dann 0,1, dann 0,2 usw

Hoffe ihr habt mich verstanden und könnt mir helfen, alles andere geht nämlich zum Glück.

Liebe Grüße
Nesaja
 
Moin!
So, ich bin jetzt ein ganzes Stückchen weitergekommen, jedoch will mir einfach nicht in den Kopf, was die Methode getValueAt(int row, int col) macht.
Okay, sie gibt den Inhalt einer spezifischen Zeile aus.
Nein, einer spezifischen Zelle..

Macht Sie das beim allerersten Aufbau gleich?
Sobald die Tabelle mit diesem Model angezeigt wird, die Tabelle neu gezeichnet wird.. o.ä.
Und wenn sich Daten in deinem Vector geändert habe, rufst du am besten die Methode
Code:
fireTableDataChanged()
auf.. Das bewirkt ebenfalls, das die Tabellenanzeige refresht wird..
Ruft sie beim TabellenAufbau jede einzelne Zelle ab, also als erstes 0,0 dann 0,1, dann 0,2 usw
Vielleicht auch 1,0 2,0, 3,0 ... keine Ahnung.. Wenn du 100% genau wissen willst, wie es funktioniert, solltest du dir mal den Sun Quellcode anschauen.. Nur Frage ich mich wozu du das brauchst.. Das sollte an der Funktionsfähigkeit deiner anwendung nichts ändern...

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Supi danke für die schnelle Antwort!

So genau brauch ichs nur nicht, brauche das nur vom System her, dass ichs besser verstehe.

Dann habe ich wohl aber nen Fehler drin. Meine getValueAt sieht wie folgt aus:

Code:
Lebensmittel LeMi = (Lebensmittel)LM.elementAt(row);
		
		switch (column)
		{
			case 0:
				return LeMi.name.toString();
			case 1:
				return LeMi.ort.toString();
			case 2:
				return LeMi.kategorie.toString();
			case 3:
				return (LeMi.aTag+"."+LeMi.aMonat+"."+LeMi.aJahr).toString();
			default:
				return null;
		}

LM ist ein Vektor in dem meine Lebensmittel gespeichert werden

Die Tabelle sieht bzw. soll dann wie folgt aussehen:

Name Ort Kategorie Datum <-- Tabellenkopf
Schoki Naschschrank Süßzeug 26.12.2007 <-- Tabellenzeile


Passt das so vom Prinzip her? Oder bin ich komplett auf dem Holzweg?

Liebe Grüße
Nesaja
.
.
.
 
Problem gelöst, mein Vektor sollte vielleicht Daten enthalten wenn ich damit ne Tabelle füllen will.

Danke nochmal.
 
halli hallo,

wenn wir hier schon beim thema sind würd ich gleich weiter fragen^^, hoffe das stört keinen^^...

Prinzip:
habe eine gui in der eine Tabelle angezeit wird und ein TextField in der der Benutzer ein Suchkreterium eingeben kann (z.B. Vorname oder Nachname einer in der Tabelle stehenden Person). Es wird sofort gesucht sobald der Benutzer einen Buchstaben eingibt (sprich: es werden alle Personen mit dem jeweiligen Buchstaben angezeigt).

Problem:
Das anzeigen der Tabelle funktioniert soweit aber wenn ich jetzt einen Suchbegriff eingebe sucht er auch aber zeichnet die Tabelle nicht neu und mit fireTableDataChanged() gehts auch nicht.

Bitte helft mir^^
LG Poxy:)
 
Habs mit einem KeyListener verknüpft...

habs jetzt hinbekommen...
musste das ganze noch mit tabelle.setModel(model) setzten. Ich hab mit der Klasse AbstractTableModel gearbeitet und die muss man dann noch zur Tabelle hinzufügen.
Hab da anscheinend was fasch verstanden gehabt beim Tutorial.

LG
Poxy:)
 
Zurück