Probleme mit JTable

Code:
        public void setData(Vector _data)
        {
            this.data=_data;
            System.out.println(this.data);
        }
Versuchs mal damit.
 
Also entweder lässt du den Aufruf
Code:
super();
im Konstruktor deines Models weg oder du musst die Zeilen tauschen. Beides wird dein Problem lösen.
Ich würde aber sagen, lass den super-Aufruf weg.

Das Problem ist dass der Konstruktor vom DefaultTableModel, irgendwann die Methode getRowCount() aufruft. Die hast du ja überschrieben und zu der Zeit ist der Vector noch null.

Warum leitest du deine Klasse nicht einfach vom AbstractTableModel ab?
Wenn du nicht unbedingt eine Methode vom DefaultTableModel brauchst, würde ich dir das empfehlen.

MFG

zEriX
 
Hm, okay, ich habs jetzt insgesamt so:
Code:
/*
 * TableModelHotel.java
 *
 * Created on 29. Januar 2008, 08:27
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package gui;
import model.*;
import java.util.Vector;

public class TableModelHotel extends javax.swing.table.DefaultTableModel {
    
    /**
     * Creates a new instance of TableModelHotel
     */

        private Vector data;
        public TableModelHotel(Vector vec)
        {
            this.setData(vec);
        }
        public void setData(Vector _data)
        {
            this.data=_data;
            System.out.println(this.data.size());
        }
        public int getColumnCount() { 
            return 4;
        }
        public int getRowCount() {
            return 3;
        }
        public Object getValueAt(int rowIndex, int columnIndex) {
            Object obj = data.get(rowIndex);
            Hotel objHotel=(Hotel)obj;
            switch(columnIndex)
            {
                case 1: return objHotel.getHotelCode();
                case 2: return objHotel.getHotelName();
                case 3: return objHotel.getCity();
                case 4: return objHotel.getNumberOfStars();
                default: return null;
            }
        }
        public Vector getDataVector() {
		return data;
	}

	public void setDataVector(Vector _dataVector) {
		this.data = _dataVector;
	}
        public boolean isCellEditable(int row, int col) {
		 return false;
	}
}

Trotzdem bleibt der Fehler. Hm, strange.

EDIT:
Hm, ich hab jetzt auch einfach mal einen Breakpoint auf das this.setData(vec); in dem Konstruktor gesetzt, da springt er anscheinend auch nicht rein. Kann sowas überhaupt sein?
 
Zuletzt bearbeitet:
Oh, Gott, es funktioniert. Frag mich nicht, warum. Ich hab grad nochmal ausgeführt, um die Fehlermeldung zu erzeugen, und da sprang es auf einmal an. Ich hab eigentlich da nichts geändert.
 
Ahh, ich glaub, ich hab des Rätsels Lösung. Ich arbeite hier das erste mal mit NetBeans. Anscheinend hat das gute Stück nicht sofort alles kompiliert, sodass ich hier anscheinend auf altem Code rumgehackt hab.
 

Neue Beiträge

Zurück