Hier ist das Beispiel .
Wenn Sie TranslucentWindow
in NetBeans IDE 7.0 erstellen und ausführen, die jdk7 unterstützt, erhalten Sie die folgende Ausnahme:
Entsprechend dieser Stapelverfolgung ist die problematische Zeile tw.setOpacity(0.55f)
. Aber, wie der Fehler anzeigt, wenn Sie setUndecorated(true)
auf den Rahmen aufrufen, wird die Ausnahme nicht geworfen und ein durchsichtiges Fenster erzeugt, wenn auch ohne Dekoration (was ein Schmerz ist). Ist das normal? Sollte dieser Code nicht "out-of-the-box" funktionieren? Übersehe ich etwas?
BEARBEITEN
Warum erscheint ihr transluzentes Fenster dekoriert oder ist das benutzerdefinierte Rendering?
Was es ist ...
Was es sein sollte ...
Direkt von den JavaDocs für java.awt. frame.setOpacity () in JDK7 :
Die folgenden Bedingungen müssen erfüllt sein, damit der Deckkraftwert kleiner als 1.0f ist:
- Die TRANSLUCENT-Transluzenz muss vom zugrunde liegenden System
unterstützt werden- Das Fenster muss nicht dekoriert sein (siehe setUndcorated (boolean) und Dialog.setUndcorated (boolean))
- Das Fenster darf nicht im Vollbildmodus sein (siehe GraphicsDevice.setFullScreenWindow (Window))
Wenn der angeforderte Deckkraftwert kleiner als 1.0f ist und eine der obigen Bedingungen nicht erfüllt ist, wird die Fensteropazität nicht geändert und die IllegalComponentStateException wird ausgelöst.
Das Verhalten, das Sie sehen, ist dokumentiert und erwartetes Verhalten.
Dies ist ein verifizierter Fehler. Ich habe Oracle-Informationen zu ihrem Beispielcode mit der Standardinstallation von JDK 1.7.0 oder JRE7 nicht gesendet. Mit dem folgenden Quellcode, der in TranslucentWindow.java kompiliert wurde, schlägt es fehl und erzeugt die oben angegebene Ausnahme.
Von der Webseite Oracle Translucency / Shaped Windows Page
%Vor%}
%Vor% Verwenden Sie com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.5f)
in JDK 7.
Siehe hier .
Hi das Problem mit diesem Code ist, dass es die folgende Codezeile in der main () -Methode fehlt:
%Vor%Es sollte direkt nach dem Code gehen, der prüft, ob durchsichtige Fenster nicht unterstützt werden und beendet:
%Vor%Außerdem ist das Bild des einheitlich durchscheinenden Bildes irreführend, da es das Java-Look and Feel verwendet. Stattdessen sollte das Bild das Windows-System-Look and Feel verwenden (vorausgesetzt, Sie befinden sich unter Windows). Wenn Sie versuchen, das Aussehen und Verhalten von Java zu verwenden (d. H.% Co_de%), wird derselbe Fehler wie zuvor ausgelöst. Ich hatte gehofft, dass das durchsichtige Fenster mit dem Java-Look and Feel funktionieren würde, aber ich glaube nicht, dass dies möglich ist.
Tags und Links java swing java-7 translucency netbeans7.0