Ich habe in einem ScrolledComposite eine Tabelle stehen, deren Größe ich mittlerweile steuern kann und die man auch wunderbar durchscrollen kann. Jetzt gibt es einen Schönheitsfehler, dem ich nicht auf die Spur komme. Und zwar möchte ich, dass sich die Tabelle automatisch der Breite (u. ggf. der Höhe) anpasst, sobald man das Fenster in seiner Größe verändert. Alle meine Versuche mit grabExcessHorizontalSpace, FILL, FILL_HORIZONTAL oder was auch noch so umherschwirrte scheiterten :-( Kann mir da jemand helfen?
Hier mal ein Beispiel, bei dem es auftritt:
Hat jemand eine Idee? Das macht mich ganz fuchsig ...
Martin
Hier mal ein Beispiel, bei dem es auftritt:
Code:
package de.tutorials;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.*;
public class TableResizeProblem {
public static void main (String[] args) {
Display display = new Display ();
Shell shell = new Shell (display);
shell.setLayout(new GridLayout());
new Label(shell, SWT.NONE).setText("Kilometer: ");
Text kilometer = new Text(shell, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
kilometer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
final ScrolledComposite sc1 = new ScrolledComposite(shell, SWT.V_SCROLL | SWT.BORDER);
Table tabelleWasserstand = new Table(sc1, SWT.NONE);
tabelleWasserstand.setHeaderVisible(true);
tabelleWasserstand.setLinesVisible(true);
TableColumn spalteWasserstand = new TableColumn(tabelleWasserstand, SWT.NONE);
spalteWasserstand.setText("Wasserstand");
TableColumn spalteKstWert = new TableColumn(tabelleWasserstand, SWT.NONE);
spalteKstWert.setText("Kst-Wert");
TableColumn spalteKstBlock = new TableColumn(tabelleWasserstand, SWT.NONE);
spalteKstBlock.setText("Kst-Block");
for(int i = 0; i < 27; ++i) {
TableItem item = new TableItem(tabelleWasserstand, SWT.NULL);
for(int j = 0; j < 3; ++j) {
item.setText(j, "Item " + i + "-" + j);
}
}
for(int i = 0; i < 3; ++i) {
TableColumn column = tabelleWasserstand.getColumn(i);
column.pack();
}
tabelleWasserstand.pack();
sc1.setContent(tabelleWasserstand);
GridData gridData1 = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
gridData1.heightHint = 400;
sc1.setLayoutData(gridData1);
shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
}
Hat jemand eine Idee? Das macht mich ganz fuchsig ...
Martin