2017-04-07 2 views
0

Ich habe zwei SWT-Tabellen in eine Group eingewickelt, die eine ScrolledComposite Browser-Bildlaufleisten zu verhindern (und stattdessen nur die Tabelle scrollen).Zwei SWT-Tabellen kämpfen um Platz zu greifen

table_sizing_toolInfo = new Table(grpCapacityReport, SWT.BORDER); 
table_sizing_toolInfo.setData(RWT.FIXED_COLUMNS, Integer.valueOf(6)); 
table_sizing_toolInfo.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

Beide Tabellen haben GridData die überschüssige vertikalen Raum greift.

Beim Rendern ohne Daten funktionieren die Tabellen wie erwartet (beide haben Grab Excess, und so teilen sie den Ansichtsraum). Sobald die Daten in die Tabellen eingetragen sind, wird immer noch wie erwartet angezeigt, bis die Tabs gewechselt werden (Neuzeichnen erzwingen).

table_sizing_dgrInfo.setRedraw(false); 
table_sizing_toolInfo.setRedraw(false); 
table_sizing_dgrInfo.removeAll(); 
table_sizing_toolInfo.removeAll(); 
while (table_sizing_dgrInfo.getColumnCount() > 6) { 
    table_sizing_dgrInfo.getColumns()[6].dispose(); 
} 
while (table_sizing_toolInfo.getColumnCount() > 6) { 
    table_sizing_toolInfo.getColumns()[6].dispose(); 
} 
renderSizingTableDynamic(scenarioMap.get(combo_sizing_ScenarioID.getText())); 
table_sizing_toolInfo.setRedraw(true); 
table_sizing_dgrInfo.setRedraw(true); 

Die untere Tabelle mehr Daten als die obere Tabelle enthält und als weitere Reihen der unteren Tabelle verschlingt hinzugefügt werden, um den Raum der oberen Tabelle, bis es nur eine einzige Pixle hoch ist.

Antwort

1

Die ScrolledComposite ist unwahrscheinlich, Ihre Bedürfnisse hier zu bedienen. Wenn Sie beide Tabellen wollen die gleiche Höhe nehmen, dann sollten Sie einen Rowlayout wie folgt verwenden:

parent.setLayout(new RowLayout(SWT.VERTICAL)); 
Table topTable = new Table(parent, ...); 
Table bottomTable = new Table(parent, ...); 

Sie auch eine SashForm als Mutter beider Tabellen verwenden könnte. So kann der Benutzer den Fensterrahmen ziehen, der die Tabellen trennt, und entscheiden, wie hoch die einzelnen Tabellen sein sollen.

Für weitere Informationen bietet der Artikel Understanding SWT Layouts eine eingehende Diskussion der SWT-Standard-Layouts. Sie können die Verwarnungswarnung unbeachtet lassen, die dort diskutierten Konzepte sind weiterhin gültig.

+0

Ich wollte nicht, dass beide Tabellen die gleiche Höhe haben. Der obere Tisch sollte zum Inhalt passen und der untere Tisch sollte überschüssigen vertikalen Raum einnehmen. In diesem Fall arbeitete ein expandierendes Gitterlayout mit 'dgrInfoGD.minimumHeight = SWT.DEFAULT;' Das Problem hier ist, dass der überschüssige Variablenraum an den Browserfensterraum gebunden ist (Ich habe keine dynamischen Größenanpassungs-Listener-Layouts ... noch). Mit dieser Bedingung im Hinterkopf, obwohl für meine Verwendung der Fensterplatz immer genügend Platz für beide Tabellen haben sollte, ist die 'SashForm' die konsistenteste für UX. – Elysiumplain

Verwandte Themen