Problem mit DefaultTalbeModel in JTable

jehle

Grünschnabel
Hallo, ich schreib zur Übung gerade ein kleines Programm, des eine Verbindung mit einer PostgreSql-Datenbank hat. Es soll ein simples Kundenverwaltungsprogramm darstellen, mit einer simplen eingabe Maske(Vorname, Nachname, Straße usw.) und einer JTable, die die einträge aus der Datenbank dynamisch darstellen soll. Dafür hab ich ein DefaultTableModel, des die Daten auch einwandfrei aus der DB rausholt, und in der Systemausgabe auch alle Daten anzeigt. Ich schaffe es jetzt nur nicht, die Daten in die JTable zu bekommen....

Ich hab eine Klasse Visual, wo die Swing-Oberfläche drinn steht:
Code:
public static JTable table1;
table1 = new JTable();
table1.setModel(Functions.data);
scrollPane= new JScrollPane(table1);
und eine Klasse wo die Funktionen stehn:

Code:
public static DefaultTableModel data = new DefaultTableModel();
	 
	public static void showdata ()
	 {
	   try
	   {
	     Statement statement = Database.conn.createStatement (ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

	     ResultSet resultSet = statement.executeQuery ("SELECT * from kunden");

	     ResultSetMetaData rsmd = null;
	     int clmCnt = -1;

	     
	     try {
	         rsmd = resultSet.getMetaData();
	         clmCnt = rsmd.getColumnCount();
	     } catch (SQLException e) {
	         e.printStackTrace();
	     }
	     if (rsmd == null || clmCnt == -1) {
	         throw new RuntimeException("rsmd is null");
	     }

	     try {
	    	 resultSet.first();
	         resultSet.last();
	         int rowCnt = resultSet.getRow();
	         resultSet.first();

	         Object[][] odata = new Object[rowCnt][clmCnt];
	         Object[] clmHeaders = new Object[clmCnt];
	         for (int i = 1; i <= clmCnt; i++) {
	             clmHeaders[i - 1] = rsmd.getColumnName(i);
	         }

	         int row = 0;
	         while (resultSet.next()) {
	             for (int i = 1; i <= clmCnt; i++) {
	            	 System.out.print(resultSet.getString(i) + " ");
	                 odata[row][i - 1] = resultSet.getString(i);
	             }
	             row++;
	             System.out.println();
	         }

	         data.setDataVector(odata, clmHeaders);

	     }
	     catch (SQLException e1) {
	         e1.printStackTrace();
	     }

	  
	     resultSet.close ();
	     statement.close ();
	   }
	   catch (SQLException e)
	   {
	     e.printStackTrace ();
	     System.exit (1);
	   }
	    data.fireTableStructureChanged();
	    data.fireTableDataChanged();
	   
	 }

Wäre super wenn Ihr mir helfen könntet...
 
Hast du mal kontrolliert, ob was im Array drin steht?

Könntest du mal den kompletten Code posten?

MFG

Sascha
 
Ja, in den Arrays steht was, ich bekomme auch durch den System.out.print alle Daten zu sehn. Ich bekomm sie nur nicht in die JTable, da rührt sich garnix...

Klar doch, besteht halt aus mehreren Klassen, die erste Läd die Treiber für die Sql verbindung, und öffnet die Klasse Visual, wo die Swing elemente( auch die JTable drinn stehn)http://phpfi.com/318099

die Klasse Visual ist mit der Klasse Funktions verknüpft, da es sonst noch unübersichtlicher wär. Hier stehen alle Methoden( auch des DefaultTableModel)http://phpfi.com/318097

und dann hab ich noch ne Klasse, die die Verbindung mit der Datenbank beendet.

Danke für die Hilfe:)
 
Dann schau dir mal in der Klasse Visual die Methode initComponents an. Du legst die JTable an, setzt bei dieser das Model, legst später wieder eine neue an und setzt die neue in die ScrollPane.

MFG

Sascha
 
Zurück