Daten an Tabel Model übergeben

bispi

Mitglied
Hallo zusammen,
ich möchte ein JTabel dynamisch befüllen. Nur weiß ich nicht wie ich die Daten an das Tabel Model übergebe.

Java:
class LieferantenTabelle extends AbstractTableModel{
    String[] columnNames ={"Lieferant",
                            "Material",
                            "Lieferzeit",
                            "Qualität",
                            "Preis",
                            "Bewertung"};    

    public LieferantenTabelle() {
    }

     public String getColumnName(int column){
        return columnNames[column];
    }

    public int getRowCount() {
        return data.length;
    }

    public int getColumnCount() {
        return columnNames.length;
    }

    public Object getValueAt(int row, int col) {
        return data[row][col];
    }
}

Wie kann ich das Object data an die class übergeben?

class LieferantenTabelle(Object[][] data) extends AbstractTableModel{
funktioniert nicht.

Schon mal Danke im Voraus.

Gruß
bispi
 
Du musst data im Konstruktor deines Model übergeben. Wenn Daten nun zur Laufzeit kommen, brauchst du noch eine public-Methode, mit der du data modifizieren kannst. In dieser Methode musst du dann noch fireTableDataChanged in die Swing Queue einreihen.
 
Danke für die Antwort.
Kannst Du mir einen Code-Schnipsel für "Du musst data im Konstruktor deines Model übergeben." geben, weil ich nicht weiß wie.

Vielen Dank.
Gruß bispi
 
Mach dir ein ein eigenes Model das von AbstractTableModel erbt. Die Methoden die du überschreiben musst sind eigentlich sehr selbst erklärend. Das Modell übergibst du dann an das JTable. Wie du dann im Model deine Daten verwaltest ist dir überlassen.
 
schau dir irgendein denkbares Beispiel zu Konstruktoren an, etwa Auto2 in
JAVA: 6.1.4 Konstruktoren

ob nun ein einzelner String oder ein Object[][] übergeben wird, macht fast keinen Unterschied,

Attribute, Methoden, Konstruktoren, Parameter, getter + setter solltest du wirklich kennen bevor du irgendeine komplexere Klasse schreibst,
und GUI mit implementierten TableModel ist schon eine Menge Stufen höher..
 
@ARadauer: sehr gute Idee, darum ist die class LieferantenTabelle ja auch mein Model.

@SlaterB: Danke für Deine Antwort, aber es ist keine Lösung für mein Problem. Ein Link, der mein Problem behandelt wäre super gewesen.

@all: Wahrscheinlich habe ich mein Problem unklar definiert.
Die class LieferantenTabelle ist mein Tabel Model.
In der class Lieferantenbewertung wird das Object[][] data mit Daten befüllt, wobei die Größe je nach Funktion variiert.
Wie übergebe ich "data" an das Model?

Dank und Gruß
bispi
 
> Wie übergebe ich "data" an das Model?

per Konstruktor oder Methode, so wie alle Daten überall auf der Welt übergeben werden,
model.setData(data);

eine Lösung speziell für dein Problem wirst du nicht finden,
genausowenig eine Webseite die genau Wurzel aus 48564 ausrechnet
 
Wurde das von Foermchen82 nicht schon alles beantwortet? :autsch:
Und Slaters Link zeigt doch ein Beispiel?! Das ist doch eine ganz normale Klasse..der Konstruktor sieht doch hier nicht anders aus als in jeder anderen klasse auch?
Java:
	private Object[][] data;

	public LieferantenTabelle(Object[][] data) {
		this.data = data;
	}

Und dann wie bereits erwähnt, Methoden schreiben die das Array neu setzen und dann eben fireTableDataChanged(); ,fireTableCellUpdated o.ä. aufrufen....wo genau ist jetzt dein Problem?

Auch dieser Link könnte helfen: How to Use Tables (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components) (da ist auch ein Beispiel enthalten!!)
 
Danke eRaaaa,
dein Code-Schnipsel sorgt für Klarheit, hatte ein mächtiges Brett vorm Kopf.

@SalterB: schon klar. hast du noch nie einen dummen Fehler gemacht und dich gewundert warum etwas nicht funktioniert? Dann fragst Du nach und erkennst den Fehler und lachst, weil er wirklich banal ist.

Danke für eure Mühe.

Gruß
bispi
 

Zurück
Oben