Hi zusammen,
ich brauche eure Hilfe
ich habe wie im Code unten angegeben einen eigenen JTable Header Renderer erzeugt, welche die Spaltenüberschrift zeichnet.
Nun habe ich das Problem, dass beim neuzeichnen der Tabelle plötzlich nicht mehr meine SPaltenbeschriftung da steht, sondern nur noch A,B... usw.
Wie ihr seht bekommt aber doch jede TableColumn, beim TableEvent, den HeaderRenderer neu gesetzt, das sollte dann doch eigentlich funktionieren oder?
Habt ihr mir vielleicht einen Rat?
ich brauche eure Hilfe
ich habe wie im Code unten angegeben einen eigenen JTable Header Renderer erzeugt, welche die Spaltenüberschrift zeichnet.
Nun habe ich das Problem, dass beim neuzeichnen der Tabelle plötzlich nicht mehr meine SPaltenbeschriftung da steht, sondern nur noch A,B... usw.
Wie ihr seht bekommt aber doch jede TableColumn, beim TableEvent, den HeaderRenderer neu gesetzt, das sollte dann doch eigentlich funktionieren oder?
Java:
//extends JTable
public AramTable(DataModel lModel){
this.setModel(lModel);
this.setRowSelectionAllowed(true);
this.setColumnSelectionAllowed(false);
this.setRowHeight(25);
this.getTableHeader().setReorderingAllowed(false);
// dies hier funktioniert
for(int i = 0; i < this.getColumnModel().getColumnCount(); i++){
this.getColumnModel().getColumn(i).setWidth(300);
this.getColumnModel().getColumn(i).setPreferredWidth(300);
this.getColumnModel().getColumn(i).setHeaderRenderer(new AramTableHeaderRenderer());
}
// nachdem sich die Struktur der Tabelle ändert setze ich den HeaderRenderer neu, bringt aber nichts
lModel.addTableModelListener(new TableModelListener(){
@Override
public void tableChanged(TableModelEvent e) {
TableColumnModel lModel = getTableHeader().getColumnModel();
TableColumn lColumn = null;
for(int i = 0; i < getColumnModel().getColumnCount(); i++){
lColumn = lModel.getColumn(i);
lColumn.setWidth(300);
lColumn.setPreferredWidth(300);
lColumn.setHeaderRenderer(new AramTableHeaderRenderer());
}
// call invalidate and waits until all components are new computed
revalidate();
// repaints the region
repaint();
}
});
}
Habt ihr mir vielleicht einen Rat?