Scroll Composite funktioniert nicht

amonts

Grünschnabel
Hallo,

ich entwickle gerade ein PLugin für Eclipse (2.1 ) bzw. WSAD.
Als Hauptfenster für das Plugin habe ich einen MultiPageEditor verwendet.
Auf Seite 1 füge ich eine Composite ein.
In diese Composite füge ich eine Group (contentGroup) ein, in diese kommen dann Buttons und weitere Groups.
Wenn die contentGroup größer als das Fenster wird, sollte die Composite scrollen.
Ich kann zwar scrollbalken hinzufügen und diese auch bewegen, jedoch die contentGroup bewegt sich nicht.
Muss ich hier an der contentGroup eine Funktion registrieren?
Composite composite = new Composite(getContainer(), SWT.V_SCROLL|SWT.H_SCROLL);

GridLayout layout = new GridLayout();
layout.makeColumnsEqualWidth = false;
GridData compositeGrid = new GridData(GridData.FILL_BOTH);
composite.setLayout(layout);
layout.numColumns = 2;

GridData gd2 = new GridData(GridData.BEGINNING);
gd2.horizontalSpan = 2;

Group contentGroup = new Group(composite, SWT.NONE);
contentGroup.setText("Content");
GridLayout contentLayout = new GridLayout();

UPDATE:
Im internet habe ich noch weitere Anleitungen für ScrolledCompsite gefunden. Leider funktioniert diese überhaupt nicht. sobald ich eine ScrolledComposite hinzufüge funktioniert nichts mehr.
 
Zuletzt bearbeitet:
Hallo amonts,

also Deine Idee mit dem ScrolledComposite war schon sehr richtig, wenn ich Dein Problem richtig erfasst habe. Beim ScrolledComposite musst Du noch darauf achten, ihm explizit einen Content zuzuweisen und den Inhalt mittels pack() sichtbar zu machen. Folgende Zeilen müsstest Du ändern/hinzufügen:
(1) ScrolledComposite composite = new ScrolledComposite(shell, SWT.V_SCROLL);
(2) contentGroup.pack();
(3) composite.setContent(contentGroup);

Hier mal ein Minimalbeispiel mit Deinem Code:
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 Amonts {
	
	protected static	Shell 				shell;

	public static void main(String[] args) {
		Display display = new Display ();
				
	    shell = new Shell (display);
		shell.setLayout(new GridLayout());
		
		ScrolledComposite composite = new ScrolledComposite(shell, SWT.V_SCROLL);
		
		GridLayout layout = new GridLayout();
		GridData compositeGrid = new GridData(GridData.FILL_BOTH);
		composite.setLayout(layout);
		composite.setLayoutData(compositeGrid);
		
		Group contentGroup = new Group(composite, SWT.NONE);
		contentGroup.setText("Content");
		contentGroup.setLayout(new GridLayout());
		contentGroup.setLayoutData(compositeGrid);
		
		Button b1 = new Button(contentGroup, SWT.PUSH);
		b1.setText("Knöpfle");
		Button b2 = new Button(contentGroup, SWT.PUSH);
		b2.setText("Knöpfle");
		Button b3 = new Button(contentGroup, SWT.PUSH);
		b3.setText("Knöpfle");
		
		contentGroup.pack();
		composite.setContent(contentGroup);
		
		shell.pack();
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) display.sleep();
		}
		display.dispose();
	}
}

Hilft Dir das weiter?

Martin
 
Hallo,

ich habe das Beispiel als eigenständige SWT-Applikation zum laufen gebracht,
leider funktioniert der selbe Code bei einem Multipageeditor nicht.
Es muss wohl noch irgendetwas geben, das man hinzufügen oder einstellen muss.
 
Zurück