ScrolledForm macht probleme!

gmaringer

Mitglied
hallo hab mich ein wenig mit dem visaleditor gespielt und dabei passiert mir ständig ein fehler!
wenn ich eine scrolledform erzeuge und darin eine section->composite->table, dann scrolled er mir nicht sonder schneidet einfach ab! erst wenn ich die section zumache und danach wieder expandiere wird der scrollbalken angezeigt!
Er regisitriet einfach nicht die widgets die sich in dem composite befinden
Danke für jede Hilfe!
Hier noch der Quellcode mit mainmethode:

Code:
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;

import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.swt.layout.GridData;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.layout.FillLayout;

public class Tesshell {

	private Shell sShell = null;
	private FormToolkit formToolkit = null;   //  @jve:decl-index=0:visual-constraint=""
	private Section section = null;
	private ScrolledForm scrolledForm = null;
	private Composite composite = null;
	private Table table = null;
	/**
	 * This method initializes formToolkit	
	 * 	
	 * @return org.eclipse.ui.forms.widgets.FormToolkit	
	 */
	private FormToolkit getFormToolkit() {
		if (formToolkit == null) {
			formToolkit = new FormToolkit(Display.getCurrent());
		}
		return formToolkit;
	}

	/**
	 * This method initializes section	
	 *
	 */
	private void createSection() {
		section = getFormToolkit().createSection(scrolledForm.getBody(), ExpandableComposite.TWISTIE | Section.DESCRIPTION | ExpandableComposite.TITLE_BAR);
		section.setExpanded(true);  // Generated
		section.setBackground(new Color(Display.getCurrent(),255,100,0));
		createComposite();
		
	}

	/**
	 * This method initializes scrolledForm	
	 *
	 */
	private void createScrolledForm() {
		GridData gridData = new GridData();
		gridData.horizontalSpan = 2;  // Generated
		scrolledForm = getFormToolkit().createScrolledForm(sShell);
		createSection();
		scrolledForm.setLayoutData(gridData);  // Generated
		scrolledForm.getBody().setLayout(new FillLayout());  // Generated
//		GridData gd = new GridData(GridData.FILL_BOTH);
//		gd.heightHint=700;
//		scrolledForm.getBody().setLayoutData(gd);
	}

	/**
	 * This method initializes composite	
	 *
	 */
	private void createComposite() {
		GridData gridData1 = new GridData();
		gridData1.horizontalSpan = 2;  // Generated
		GridLayout gridLayout1 = new GridLayout();
		gridLayout1.numColumns = 2;  // Generated
		composite = getFormToolkit().createComposite(section);
		composite.setLayout(gridLayout1);  // Generated
		table = getFormToolkit().createTable(composite, SWT.NONE);
		TableColumn tc = new TableColumn(table,SWT.NONE);
		tc.setText("hallo");
		tc.setWidth(100);
		TableColumn tc2 = new TableColumn(table,SWT.NONE);
		tc2.setText("hallo");
		tc2.setWidth(100);
		TableColumn tc3 = new TableColumn(table,SWT.NONE);
		tc3.setText("hallo");
		tc3.setWidth(100);
		TableItem ti = new TableItem(table,SWT.NONE);
		TableItem ti1 = new TableItem(table,SWT.NONE);
		TableItem ti2 = new TableItem(table,SWT.NONE);
		TableItem ti3 = new TableItem(table,SWT.NONE);
		TableItem ti4 = new TableItem(table,SWT.NONE);
		TableItem ti5 = new TableItem(table,SWT.NONE);
		table.setHeaderVisible(true);  // Generated
		table.setLayoutData(gridData1);  // Generated
		table.setLinesVisible(true);  // Generated
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/* Before this is run, be sure to set up the launch configuration (Arguments->VM Arguments)
		 * for the correct SWT library path in order to run with the SWT dlls. 
		 * The dlls are located in the SWT plugin jar.  
		 * For example, on Windows the Eclipse SWT 3.1 plugin jar is:
		 *       installation_directory\plugins\org.eclipse.swt.win32_3.1.0.jar
		 */
		Display display = Display.getDefault();
		Tesshell thisClass = new Tesshell();
		thisClass.createSShell();
		
		thisClass.sShell.open();

		while (!thisClass.sShell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	/**
	 * This method initializes sShell
	 */
	private void createSShell() {
//		GridLayout gridLayout = new GridLayout();
//		gridLayout.numColumns = 2;  // Generated
		sShell = new Shell();
		sShell.setText("Shell");
		sShell.setLayout(new FillLayout());  // Generated
		createScrolledForm();
		sShell.setSize(new Point(300, 200));
		section.setClient(composite);  // Generated
		scrolledForm.getBody().pack();
	}

}
 
Hab das Problem gelöst! nach befüllen der section muss ich nur noch das hier ausführen
Code:
scrolledForm.computeSize(SWT.DEFAULT, SWT.DEFAULT);
 
Zurück