Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > Probleme mit JTable: Spaltenbreite ändert sich einfach wieder!
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 19.10.2005, 10:43 Nach oben    #1
Lautsprecher
Gast
 
Beiträge: n/a
Standard Probleme mit JTable: Spaltenbreite ändert sich einfach wieder!

Hallo,
im initialize meiner Anwendung baue ich ein JTable mit JScrollPane auf. Hierbei lese ich gleich zum ersten Mal Daten in die Tabelle:

Code:
defaultTableModel = new DefaultTableModel(1,7);
defaultTableModel.setColumnIdentifiers(Spaltenbezeichnung); 
JTable table = new JTable(defaultTableModel);
initDatabaseStuff();
Vector results = datenbankauslesen();
defaultTableModel.setDataVector(results,Spaltenbezeichnung);
defaultTableModel.fireTableDataChanged();
table.setEnabled(false);
DefaultTableCellRenderer ren = new DefaultTableCellRenderer();
ren.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(DefaultTableCellRenderer.LEFT);
table.setShowGrid(true);
table.setColumnSelectionAllowed(true);
table.setFocusable(false);
table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
table.sizeColumnsToFit(true);
table.setBounds(new java.awt.Rectangle(0, 0, 0, 0));
table.getColumnModel().getColumn(0).setPreferredWidth(150); table.getColumnModel().getColumn(1).setPreferredWidth(370); table.getColumnModel().getColumn(2).setPreferredWidth(120); table.getColumnModel().getColumn(3).setPreferredWidth(120); table.getColumnModel().getColumn(4).setPreferredWidth(120); table.getColumnModel().getColumn(5).setPreferredWidth(120); table.getColumnModel().getColumn(6).setPreferredWidth(30); table.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
/*table.getColumnModel().getColumn(0).setHeaderRenderer(renderer);
table.getColumnModel().getColumn(1).setHeaderRenderer(renderer);*/
table.getColumnModel().getColumn(2).setCellRenderer(ren);
table.getColumnModel().getColumn(3).setCellRenderer(ren);
table.getColumnModel().getColumn(4).setCellRenderer(ren);
table.getColumnModel().getColumn(5).setCellRenderer(ren);
table.getColumnModel().getColumn(6).setCellRenderer(ren);
jScrollPane = new JScrollPane(table);
jScrollPane.setBounds(new java.awt.Rectangle(29, 168, 618, 481));
jScrollPane.setViewportView(table);
}
return jScrollPane;

Soweit klappt hier alles noch ganz gut. Der Benutzer kann von selbst nicht die Spaltenbreite änderen. Und die Spalten werden auch in der gewünschten Größe angezeigt.

In meiner Anwendung wird per Button-Druck ein neuer Datensatz in die Datenbank geschrieben und gleichzeitig wird dieser dann in der JTable ausgegeben und da krachts.
Die Daten werden zwar angezeigt, jedoch werden die Spaltenbreiten nicht übernommen! Alle Spalten sind wieder gleich groß!


Code:
 initDatabaseStuff(); //Datenbank verbinden
Code:
datenbankUpdate(); //Datensatz update und schließen
initDatabaseStuff(); //Datenbank wieder öffnen
Vector results = datenbankauslesen(); //Datensätze auslesen und schließen
defaultTableModel.setDataVector(results,Spaltenbezeichnung); 
 
defaultTableModel.fireTableDataChanged();

Hat vielleicht jemand eine Idee an was das liegen kann, bzw. was ich evtl. in der Buttonmethode nicht berücksichtigt habe?

Grüße
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.10.2005, 18:18 Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 581
Standard

Im Zweifelsfall würde ich einfach die Breite der Spalten gleich nach dem anfügen eines Datensatzes noch einmal ausführen lassen.
Vielleich möchte das "DefaultTableModel" gerne, dass die Spalten alle gleich groß sind.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.10.2005, 15:26 Nach oben    #3
Lautsprecher
Gast
 
Beiträge: n/a
Standard

Hi sparrow,

mein code im der Button-Methode, welche den DatenbankInsert ausführt sieht
jetzt so aus!!


Code:
initDatabaseStuff();		   /* INSERT in die Datenbank */
	  datenbankInsert();
				 
	  initDatabaseStuff();		   /* Erneut die JTable befüllen */
	  Vector results = datenbankauslesen();
	  
	  
	  JTable table = new JTable(defaultTableModel);
	  table.getColumnModel().getColumn(0).setMaxWidth(150); 
	  table.getColumnModel().getColumn(1).setMaxWidth(370); 
	  table.getColumnModel().getColumn(2).setMaxWidth(120); 
	  table.getColumnModel().getColumn(3).setMaxWidth(120); 
	  table.getColumnModel().getColumn(4).setMaxWidth(120); 
	  table.getColumnModel().getColumn(5).setMaxWidth(120); 
	  table.getColumnModel().getColumn(6).setMaxWidth(30);
Es funktioniert leider immer noch nicht. Die Spalten sind wieder gleich groß. Außerdem weiß ich nicht so recht ob ich hier table = new JTable nochmal anlegen darf. Das steht normalerweise schon in meiner Initialisierungsmethode.
Da gibts wohl noch viel zu Lernen für mich!!!
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JTable Probleme boehseronkel Desktop-Applikationen und Grafik 3 09.11.2006 18:30
GESUCHT:simples beispiel zum thema resultset, tablemodel => in einer JTable ausgeben! bamboocha Desktop-Applikationen und Grafik 2 06.06.2005 21:34


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45