2012-04-03 14 views
0

Ich habe eine Zusammensetzung und möchte eine Tabelle hinzufügen. So weit so gut, aber die Tabelle hat am Anfang keine Eingabe, so dass nur der Header auf dem Composite erscheint. Aber ich möchte, dass die Tabelle eine Standardhöhe (Minimum) hat (die Breite sollte vom GridLayout des Composites verwaltet werden). Der Verbund nimmt den vertikalen und horizontalen Raum seines Elternteils, so dass genügend Platz für den Tisch vorhanden sein sollte. ich fügen Sie die Tabelle wie folgt aus:SWT: computeSize() hat keinen Effekt

//comp is my composite 
TableViewer viewer = new TableViewer(comp); 
viewer.getTable().setHeaderVisible(true); 
//Add two TableViewerColumns 
//300 should be the minimum/default height 
viewer.computeSize(SWT.DEFAULT, 300); 

Es gibt nichts zu dem Verbund hinzugefügt ist anders und der Verbund scheint alle leeren Raum von seinem übergeordneten zu greifen, aber der Tisch auf eine Höhe von 300 nicht erweitern (Breite richtig!).

Ich hoffe, dass Sie mein Problem verstehen können :)

Antwort

3

computeSize gibt einen Punkt, der die bevorzugte Größe der Tabelle darstellt - das ist eigentlich nicht die Größe der Komponente wie das Layout einstellen kann die bevorzugte Größe ignorieren

Wenn Sie eine absolute feste Höhe für einen Tisch möchten, können Sie dies tun, indem die Tabellen Eltern Einstellung des Gridlayout zu verwenden und dann eine Griddata für die Tabelle konfigurieren:

comp.setLayout(new GridData()); 

gridData = new GridData(); 
gridData.heightHint = 300; 

viewer.getTable().setLayoutData(gridData); 
+0

Vielen Dank! :) –

+0

@Chris White: Sieht diese Tischhöhe gleich aus, wenn sie mit unterschiedlicher Systemauflösung oder Schriftart eingeloggt ist? – user1168608

Verwandte Themen