Hallo,
Ich hab da ein kleines Problem mit dem Setzen der Spaltenbreite.
Also: Wenn der Nutzer die Anwendung (wo eine Tabelle drin ist) verlässt, merkt sich mein Programm, wie groß die Spalten waren.
Nach dem neuen Start der Anwendung möchte ich die Tabellenspaltenbreite wie folgt rekonstruieren.
:arrow: Alle Spalten, bis auf die vorletze, pixelgenau in der Breite einstellen.
:arrow: Zum Schluss erhält die letzte Spalte den Rest des Platzes...
Das mit der letzten Spalte ist wichtig, da ich nicht wissen kann wie breit das Fenster oder die Tabelle ist (A. ist das beides noch nicht gezeichnet B. ist das ganze auch nicht statisch, sondern abhängig von der Auslösung des Monitor.)
Ich hatte mir dann das Folgende ausgedacht, aber das klappt nicht.
Hat jemand nen Tipp? Jedenfalls schon mal Danke fürs Lesen und Antworten....
Clemens
Ich hab da ein kleines Problem mit dem Setzen der Spaltenbreite.
Also: Wenn der Nutzer die Anwendung (wo eine Tabelle drin ist) verlässt, merkt sich mein Programm, wie groß die Spalten waren.
Code:
List _headerRectagles = new ArrayList();
for (int _i = 0; _i < (this.columns.size() -1 ); _i++) {
_headerRectagles.add(new Integer(this.messageTreeTable.getTableHeader().getHeaderRect(_i).width));
}
_properties.setProperty("messageExplorer.columnsWidths", StaticTools.implode(_headerRectagles, ","));
Nach dem neuen Start der Anwendung möchte ich die Tabellenspaltenbreite wie folgt rekonstruieren.
:arrow: Alle Spalten, bis auf die vorletze, pixelgenau in der Breite einstellen.
:arrow: Zum Schluss erhält die letzte Spalte den Rest des Platzes...
Das mit der letzten Spalte ist wichtig, da ich nicht wissen kann wie breit das Fenster oder die Tabelle ist (A. ist das beides noch nicht gezeichnet B. ist das ganze auch nicht statisch, sondern abhängig von der Auslösung des Monitor.)
Ich hatte mir dann das Folgende ausgedacht, aber das klappt nicht.
Code:
this.messageTreeTable.setAutoResizeMode(JTreeTableSortable.AUTO_RESIZE_LAST_COLUMN;
String[] _columnsWidths = _properties.getProperty("messageExplorer.columnsWidths").split(",");
int _columnWidth = 0;
int _widthSum = 0;
int _i = 0;
for (_i = 0; _i < _columnsWidths.length; _i++) {
_columnWidth = Integer.parseInt(_columnsWidths[_i]);
_widthSum += _columnWidth;
this.messageTreeTable.getColumnModel().getColumn(_i).setPreferredWidth( _columnWidth);
}
this.messageTreeTable.getColumnModel().getColumn(_i).setPreferredWidth( this.messageTreeTable.getWidth() - _widthSum);
this.messageTreeTable.setAutoResizeMode(JTreeTableSortable.AUTO_RESIZE_ALL_COLUMNS);
Hat jemand nen Tipp? Jedenfalls schon mal Danke fürs Lesen und Antworten....
Clemens