JFace TableViewer Resize

HarryXVI

Erfahrenes Mitglied
Hallo,
ich habe eine RCP erstellt, die als GUI eine Application.e4xmi hat. Die Oberfläche ist in diverse Groups unterteilt, deren Größe mit der Maus verändert werden kann.
Jetzt befindet sich in einer Group ein JFace TableViewer, der mit seinen 4 Spalten über die gesamte Breite der Group geht. Über einen Button kann ein Eintrag in der Tabelle hinzugefügt werden, und über einen anderen Button wird der selektierte Eintrag gelöscht. Dabei muss sich der Viewer jedes Mal updaten:

Java:
public void updateDisplay() {
     viewer.refresh();  // neue Einträge im Viewer sichtbar
     Table table = viewer.getTable();
     for (TableColumn tc : table.getTableColumns()) {
           tc.pack();
     }
     table.getParent().pack();  // nötig, damit alle Einträge angezeigt werden
}

Es tritt jedoch ein unangenehmer Nebeneffekt auf: Die angezeigte Tabelle wächst über die Breite der Group hinaus. Dies geschieht sowohl beim Hinzufügen als auch beim Löschen von Einträgen. Durch den pack()-Aufruf bei jeder TableColumn bleibt die Struktur schon ein wenig mehr erhalten als sonst, dennoch tritt das Problem weiterhin auf.

Kann mir dafür bitte jemand einen Tipp oder einen Lösungsansatz präsentieren, mit dem ich weiterarbeiten kann?

Interessant zu bemerken ist, dass wenn die Group mit der Maus "manuell" resized wird (also mit der Maus kurz kleiner und wieder größer), passt sich die Tabelle wieder an die Breite der Group an...
 
Zuletzt bearbeitet:
Zurück