# JWindow rund machen



## Defan (30. Mai 2009)

Hi

gibt es eine möglichkeit ein ganz normales Jwindow, was ja normalerweise ein rechteck ist zu einem kreis oder einem oval zu machen??? 
also cih zeig zur zeit etwas rundes an und somit gibt es viel, was rausteht und das würde ich halt gern wegmachen....

danke schonmal


----------



## Dragonfire (30. Mai 2009)

JWindows ist meines Wissens eine "starre" Komponente,
die man nicht so leicht manipulieren kann.

Ich würde an dieser Stelle trixen 
und zwar mehrfach. xD

Meine Idee wäre ein komplett transparentes JWindows,
was in Java aber direkt nicht geht:

http://www.java-forum.org/awt-swing-swt/27518-jwindow-mit-einem-bild-und-transparenz.html


Anschließend müssen sämtliche Container - JPanels die außerhalb deines Ovals liegen -  durchsichtig sein (setOpaque).

PS.: Per google habe ich etwas gefunden,
aber ich habe nicht genau durchgeblickt,
ob Timothy Wall das mit einer externen Bibliothek gemacht hat
und ob man das auf dem JWindows übertragen kann ...

Alpha Transparency Masks for java.awt.Window


----------



## Defan (30. Mai 2009)

ohh da blick ich grad net durch^^....
aber ich glaub ich erklär mein window nochmal genauer^^

also ich hab nen bild was ich mit graphics2d auf ein panel mal, was auf dem window liegt....

oder jemand erklär mir mla ungefähr was der typ bei dem 2. link gemacht hat =/


----------



## Dragonfire (30. Mai 2009)

Er hat die Java Native Access (JNA) importiert/genutzt:

https://jna.dev.java.net/

Ohne zu testen würde ich sagen,
er hat dann in WindowUtils setWindowAlpha genutzt.

Hier meine Quellen:

The Rabbit Hole: Easier Alpha Masks

PS.: Beachte den Hinweis,
dass es auf Linux Systeme wohl noch Probleme gibt.

PSS.: Ein weitere Beispiel:

sellmic.com  JavaFX Clock update, now with transparency


----------



## tfa (30. Mai 2009)

Wenn du Java 1.6u10 oder höher verwendest, hilft das vielleicht:
Snippet: Transparente nicht-rechteckige Fenster


----------



## Defan (30. Mai 2009)

Dragonfire hat gesagt.:


> Er hat die Java Native Access (JNA) importiert/genutzt:
> 
> https://jna.dev.java.net/
> 
> ...



jo hatte ich auch schon^^ hab mich doch irgendwie durchgewuselt, aber wie importier ich die jna.jar??? das bekomm ich net raus... da stehn ja irgendwie die klassen oder so drin



tfa hat gesagt.:


> Wenn du Java 1.6u10 oder höher verwendest, hilft das vielleicht:
> Snippet: Transparente nicht-rechteckige Fenster



ohh... ich hab 1.6u13^^ ja das probier ich dann auch gleich mal...


----------



## Dragonfire (30. Mai 2009)

Was verwendest du denn zum programmieren?

Eclipse?
NetBeans?

oder doch was anderes,
wie 
BlueJ?


----------



## Defan (30. Mai 2009)

gut ich habs mit dem AWTUtilities geschafft danke euch allen :toll:

@Dragonfire NetBeans, aber is gelöst 

aber wenn du willst kannstes mir trotzdem noch erklären.. würde mich auch mal interessieren


----------



## L-ectron-X (30. Mai 2009)

Kannst du mal Beispielcode zu deiner Lösung posten, damit mal jemand, der später nach einer Lösung sucht, auf deiner aufsetzen kann?


----------



## Dragonfire (30. Mai 2009)

Ich hab das ja auch nur mit suchen und googlen gefunden 
Aber wenn du meinst mit importieren,
bei eclipse kann man jar-Dateien direkt importieren ...
In BlueJ hab ich immer die .class Dateien extrahiert und dann 
manuell hinzugefügt.
In NetBeans kenne ich mich nicht aus,
aber ich wette es gibt dort auch eine Funktion zum Importieren 

Ps.: Ich würde mich auch über ein Beispielcode freuen


----------



## tfa (30. Mai 2009)

L-ectron-X hat gesagt.:


> Kannst du mal Beispielcode zu deiner Lösung posten, damit mal jemand, der später nach einer Lösung sucht, auf deiner aufsetzen kann?



Da er schreibt, es mit den AWTUtilities gelöst zu haben, nehme ich an, er hat den Beispielcode aus meinem Blog genommen. Siehe oben.


----------



## Defan (30. Mai 2009)

joa ich mach mal nen beispielcode^^

```
import javax.swing.JFrame;
import com.sun.awt.AWTUtilities;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.Shape;

public class Main {

public static void main(String[] args) {

        JFrame = jFrame1 newJFrame();
        jFrame1.setBounds(10, 10, 166+2/3, 166+2/3);
        Shape mask = new Area(new Ellipse2D.Float(8,8,150,150)); // die form des Shapes,
        //die man haben will hier ein kreis
        AWTUtilities.setWindowShape(jFrame1, mask); // frame zur shapeform bringen
        AWTUtilities.setWindowOpacity(jFrame1, 0.9f);// transparent reinbringen
        // zw 0.0f(nichts zu sehen) - 1.0f (keine Transparenz)
        jFrame1.setVisible(true);

}
}
```

reicht das??
wenn was fehlt müsst ihr nochmal schreiben^^


----------

