Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[SWING] Probleme mit fireTableStructureChanged()

0 views
Skip to first unread message

Sascha Moellering

unread,
Aug 31, 2004, 7:23:19 AM8/31/04
to
Hallo,

ich habe eine Table mit eigenen Columns (EditableHeaderTableColumn)
implementiert, die von TableColumn abgeleitet sind, und möchte diese
ausblenden. Dazu habe ich das TableModel geändert, damit nicht mehr
anzuzeigende Columns übersprungen werden. Das Ausblenden der Spalten
funktioniert auch wunderbar, das Problem besteht darin, daß sich der
Column-Typ und damit auch CellEditor und CellRenderer nach einem
model.fireTableStructureChanged() ändern (von
EditableHeaderTableColumn nach TableColumn). Weiß jemand, wie ich das
verhindern kann?

Hier ein wenig Source-Code, wo ich die Filterung setze:

JComboBox myBox = (JComboBox) e.getSource();
CustomTableModel mod = (CustomTableModel)
table.getModel();

int size = mod.getColumnCount();

TableColumnModel model = table.getColumnModel();

for (int i = 0; i< size; i++){
System.out.println(model.getColumn(i).getClass().getName());
}


if (myBox.getSelectedItem().equals("MASTER"))
mod.setView(new HashSet());
else
mod.setView(this.custView);

mod.fireTableStructureChanged();

size = mod.getColumnCount();

model = table.getColumnModel();
for (int i = 0; i< size; i++){
System.out.println(model.getColumn(i).getClass().getName());
}


Danke,
Sascha

Sascha Moellering

unread,
Aug 31, 2004, 7:23:45 AM8/31/04
to

Thomas Bensler

unread,
Aug 31, 2004, 7:57:42 AM8/31/04
to
Sascha Moellering wrote:
> Hallo,
>
> ich habe eine Table mit eigenen Columns (EditableHeaderTableColumn)
> implementiert, die von TableColumn abgeleitet sind, und möchte diese
> ausblenden. Dazu habe ich das TableModel geändert, damit nicht mehr
> anzuzeigende Columns übersprungen werden. Das Ausblenden der Spalten
> funktioniert auch wunderbar, das Problem besteht darin, daß sich der
> Column-Typ und damit auch CellEditor und CellRenderer nach einem
> model.fireTableStructureChanged() ändern (von
> EditableHeaderTableColumn nach TableColumn). Weiß jemand, wie ich das
> verhindern kann?

Doku-Einstiegspunkt: get/setAutoCreateColumnsFromModel(). Das Flag steht
default auf true. D.h. wenn sich das Model ändert (neues setzen oder
StructureChangeEvent) wird das ColumnModel neu erzeugt (anhand der
Spaltenanzahl die das Model vorgibt). Wenn bei Deinem
fireTableStructureChanged() die Spaltenanzahl (die des Models, nicht die
sichtbare) gleich geblieben ist, sollte
setAutoCreateColumnsFromModel(false) reichen.

Hth, Thomas.

0 new messages