SWT: Problem bei Composite mit V_Scroll

Iscoron

Grünschnabel
Hi @ all!

Hab folgende Gui gemacht:
Gui

Die GUI is folgendermaßen aufgebaut: (nur rot markierten Bereich beachten)
Der rot markierte Bereich enthält ein Composite, dass ein GridLayout als Layout hat.
Innerhalb dieses Composites sind zwei Groups eingebettet ("Short Description" und die "Attributes der View").

Das Problem:
Wenn jetzt zuviel Attribute vorhanden sind, dann passen nicht mehr alle in die Group "Attributes der View", wie ihr am unteren Rand des Composites seht.

Ich habe jetzt zum Composite ein V_Scroll hinzugefügt (über den Constructor), damit ich da runterscrollen kann. Jedoch ohne Erfolg. Auf dem Bild seht ihr, dass ich ganz runtergescrollt habe, aber es tut sich gar nichts.

Weiß jemand einen Rat?
 
Hast Du mittlerweile eine Lösung für Dein Problem gefunden? Ich renne nämlich in eines der gleich Art. Bei mir sind zwei nebeneinanderliegende Tabellen in einem komplexeren GridLayout nicht scrollbar. Beide sind als eigene Klassen von Composite abgeleitet und werden in das GridLayout eingefügt.
Ich glaube wenn ich die Tabellen direkt erstelle wird auch korrekt und ohne weiteres Zutun ein Scrollbalken hinzugefügt. Jedoch ist das für mich keine wirkliche Lösung, da die Tabellen wirklich in eigenen Klassen gestaltet werden sollen. Und Table kann ja nicht abgeleitet werden -- muss also über ein Composite laufen ...

Wäre also auch sehr an einer Idee interessiert.

Martin
 
Hallo!

Wie wär's denn damit?
Code:
 /**
  * 
  */
 package de.tutorials;
 
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.graphics.Color;
 import org.eclipse.swt.layout.FillLayout;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Event;
 import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Shell;
 
 /**
  * @author Tom
  * 
  */
 public class ScrollableCompositeExample {
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		Display display = new Display();
 		Shell shell = new Shell(display);
 		shell.setLayout(new FillLayout());
 
 		ScrolledComposite scrolledComposite = new ScrolledComposite(shell,
 				SWT.BORDER | SWT.V_SCROLL);
 		Composite composite = new Composite(scrolledComposite, SWT.NONE);
 		scrolledComposite.setContent(composite);
 
 		composite.setLayout(new GridLayout(1, true));
 
 		for (int i = 0; i < 100; i++) {
 			Button button = new Button(composite, SWT.NONE);
 			button.setText("Foooo" + i);
 		}
 
 		composite.pack();
 
 		shell.setSize(400, 300);
 		shell.open();
 
 		while (!shell.isDisposed()) {
 			if (!display.readAndDispatch()) {
 				display.sleep();
 			}
 		}
 	}
 }

Gruß Tom
 
Super, das war die Lösung und ich denke sie wird es auch für meinen Vorredner sein. Ich musste nun immer nur folgendes eingeben:
Code:
final ScrolledComposite sc1 = new ScrolledComposite(this, SWT.V_SCROLL | SWT.BORDER);
einTableContainer = new einTableContainer(sc1, SWT.NONE);
sc1.setContent(einTableContainer);
einTableContainer.pack();
sc1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 12));
Wobei einTableContainer bei mir wie folgt gebildet wurde:
Code:
public class einTableContainer extends Composite {
    private static Table tabelleWasserstand;	
    public einTableContainer(Composite parent, int style) {		
	super(parent, style);
	eineTabelle = new Table(this, SWT.NONE);
    [...]
        eineTabelle.pack();

Leider konnte ich bisher in den beiden Büchern zu SWT, die ich mir gekauft habe ("Java Native Interfaces with SWT/JFace" und "SWT: The Standard Widget Toolkit - Volume 1"), kein Wort zu dem ScrolledComposite finden. Vielleicht kam das erst danach?!

Vielen Dank auf jeden Fall.
Martin
 
Zurück