# [SWT] Shell transparenz



## Vayu (4. Mrz 2009)

Servus,

folgendes Problem habe ich:

ich möchte eine anwendung mit SWT schreiben, die sich quasi direkt auf den desktop legt und nur eine Tabelle + 1-2 buttons enthält. Ich dacht mir ich mach das mit SWT. Da die Applikation, bis auf die Tabelle und die Controls durchsichtig sein soll hab ich mal ein wenig gegoggled und rausgefunden, dass man ab SWT 3.4 den Alpha-Wert der Shell setzen kann, leider wird dadurch nicht nur die Shell durchsichtig, sondern auch alle Inhalte ... wie kann ich das in SWT lösen, dass nur die Shell an sich durchsichtig wird und nicht ihre Inhalte.
Bestes Beispiel ist wohl der Rainlendar, falls den wer kennt.

[HIGHLIGHT="Java"]import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.MouseMoveListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class Test {

    Display display;
    Shell shell;

    public Test() {
        display = new Display();
        shell = new Shell(display, SWT.NO_TRIM);
        Label l = new Label(shell, SWT.NONE);
        l.setText("BLABLA");
        l.pack(true);
        shell.setAlpha(50);  // <--- 
        shell.open();
    }

    public void mainLoop() {
        while (!shell.isDisposed()) {
            if( !display.readAndDispatch() )
                display.sleep();
        }
        display.dispose();
    }

    public static void main(String args[]) {
        Test t = new Test();
        t.mainLoop();
    }
}[/HIGHLIGHT]


----------



## Wildcard (4. Mrz 2009)

Keine Ahnung ob soetwas geht. Ich habe auch noch niemals irgendwo eine Applikation gesehen die halbtransparente Fensterrahmen, aber nicht transparente Controls verwendet. Das sieht doch höchst bescheiden aus...
Wenn du nur die COntrols, aber nicht das Fenster sehen willst, dann setze der Shell doch eine Shape, oder mach die Pixel durchsichtig die du nicht haben willst.


----------



## Vayu (5. Mrz 2009)

ok sagen wir so  ich wollte halt die transparenz der einzelnen controls getrennt steuern können, dieser ansatz scheitert ja aber schon wenn die shell schon alles mit sich transparent macht.

schau mal hier Rainlendar - Home hin. Gleich auf der ersten Seite  Sowas meinte ich. Hintergrund komplett transparent, das was drauf ist nicht.


----------



## Wildcard (5. Mrz 2009)

Ich denke du suchst sowas:
Create a non-rectangular window : ShellSWTJava Tutorial
Ring Shell : ShellSWTJava Tutorial
Create non-rectangular shell from an image with transparency : ShellSWTJava Tutorial
Create a non-rectangular shell to simulate transparency : ShellSWTJava Tutorial


----------

