Ist das Java Tutorials Translucent Window Beispiel ein Problem für diejenigen, die mit jdk7 spielen?

7

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:

%Vor%

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 ...

    
mre 06.06.2011, 23:44
quelle

5 Antworten

14

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.

    
Thomas Owens 06.06.2011, 23:51
quelle
3

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%     
Rick Hodgin 31.08.2011 18:25
quelle
2

Verwenden Sie com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.5f) in JDK 7.

Siehe hier .

    
Sujith Themath 09.12.2011 21:33
quelle
0

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.

    
kimbaudi 14.12.2011 05:19
quelle
0

Ich denke, du musstUndcorated vor setBackground setzen, damit wird das Problem behoben

    
Benjemaa 11.12.2015 17:52
quelle