Sashform ein und ausblenden

sharkscream

Grünschnabel
Hallo zusammen,

ich bin eigentlich ein "Anfänger" hab aber mit Java, Eclipse und SWT schon ein bisschen rumgemacht. Die Snippets auf der Eclipse-Homepage, usw, habe ich auch schon mal durchgemacht und eigentlich auch gut verstanden.

Ich habe ein Programm mit einer SashForm in der Shell, d.h. der Bildschirm ist bei mir vertikal zweigeteilt. Im linken Teil der SashForm habe ich einen Tree erstellt. In der rechten Seite der SashForm ist ein Lable. Gibt es jetzt eine Möglichkeit die Sashform mit dem Lable ein und auszublenden? Wenn es ausgeblendet ist, soll der Tree auf dem gesamten Bildschirm zu sehen sein. Wenn das Lable wieder eingeblendet wird, soll der Bildschirm wieder geteilt sein.

Ich hoffe mir kann hier jemand einen kurzen Tipp geben.

Danke im Voraus
 
Hi sharkscream,

für ein solches Verhalten brauchst du nicht einmal die SashForm. Ich würde es einfach mit einem GridLayout versuchen:

Java:
public static void main(String[] args) {
    Shell shell = new Shell();
    // uebergeordnetes Layout setzen
    shell.setLayout(new GridLayout(2, false);

    // linke Seite initialisieren
    final Composite leftSide = new Composite(shell, SWT.NONE);
    leftSide.setLayoutData(new GridData(GridData.FILL_BOTH);

    // rechte Seite initialisieren
    final Composite rightSide = new Composite(shell, SWT.NONE);
    rightSide.setLayoutData(new GridData(GridData.FILL_BOTH);

    // linke Seite mit einem Button versehen
    leftSide.setLayout(new FillLayout());
    final Button hideRightButton = new Button(leftSide, SWT.PUSH);
    hideRightButton.setText("SICHTBARKEIT ÄNDERN");
    hideRightButton.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent event) {
            // Sichtbarkeit der rechten Seite aendern
            rightSide.setVisible(!rightSide.isVisible());
        }
    });

    // rechte Seite mit einem Label versehen
    rightSide.setLayout(new FillLayout());
    final Label infoLabel = new Label(rightSide, SWT.NONE);
    infoLabel.setText("HIER BIN ICH");

    // Fenstergroesse setzen
    shell.pack();
    // Fenster oeffnen
    shell.open();
    // Fenster offen halten
    final Display display = shell.getDisplay();
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch()) {
            display.sleep();
        }
    }
}

Da ich grade am falschen Rechner sitze, konnte ich das jetzt nur hier direkt reinschreiben und nicht testen. Ich hoffe du siehst mir das nach ;)


Viele Grüße
Carron
 
Zurück