Est La Java des Tutoriels de Fenêtre Translucide exemple donner de la difficulté à ceux qui jouent avec jdk7?
Voici la exemple.
Si vous créez et exécutez TranslucentWindow
dans, disons, l'EDI NetBeans 7.0, qui prend en charge jdk7, vous aurez l'exception suivante:
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is decorated
at java.awt.Frame.setOpacity(Frame.java:960)
at main.TranslucentWindow.<init>(TranslucentWindow.java:23)
at main.TranslucentWindow$1.run(TranslucentWindow.java:47)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:675)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
BUILD SUCCESSFUL (total time: 1 second)
Selon cette trace de la pile, la ligne incriminée est tw.setOpacity(0.55f)
. Mais, comme le message d'erreur indique, si vous appelez setUndecorated(true)
sur le cadre, alors il ne lèvera pas l'exception à la règle et va créer une fenêtre translucide, mais sans aucune décoration (ce qui est une douleur). Est-ce normal? Ne devrait-ce pas le code de courir à droite à "out-of-the-box"? Suis-je surplombant quelque chose?
MODIFIER
Pourquoi ne leur fenêtre translucide apparaissent décoré, ou est-ce de rendu personnalisé?
Ce que c'est...
Ce qu'elle devrait être...
regarde comme le tuto est obsolète ...
OriginalL'auteur mre | 2011-06-06
Vous devez vous connecter pour publier un commentaire.
Droit de la La documentation javadoc pour java.awt.cadre.setOpacity() dans JDK7:
Le comportement que vous voyez est documenté et le comportement attendu.
l'esprit de répondre à mon edit?
Malheureusement, j'ai très peu d'expérience avec le JDK7. J'ai juste commencé à regarder tout simplement parce que NetBeans 7 a le support. J'ai passé environ 20 minutes de fouiller.
de la même manière. ce qui s'est passé pour être l'un des premiers articles que j'ai fixé mon regard sur. apprécions l'aide jusqu'à présent. 🙂
Les trois seules choses que je pense sont (1) c'est une boutique, (2) pour une raison quelconque, à la limite de nudité windows n'a pas toujours là et cela a été capturé avant qui était en place, ou (3) vous pouvez définir décoré de retour après vous rendre la fenêtre translucide. Mais je ne voudrais pas parier de l'argent sur l'un d'entre eux...je souhaite que je pourrais aider plus.
OriginalL'auteur Thomas Owens
C'est un vérifiée bug. J'ai envoyé Oracle des informations sur leur échantillon de code de défaut à l'aide de l'installation par défaut de JDK 1.7.0 ou JRE7. En utilisant le code source ci-dessous compilé dans TranslucentWindow.java il échoue et génère l'exception d'abord indiqué ci-dessus.
Partir d'une page web Oracle Translucidité du /de Forme Windows Page
}
Ce n'était pas un fonctionnaire rapport de bug dans leur système de rapport de bogues, mais un e-mail à la page de documentation responsables sur cette page ayant errant code. Je n'ai jamais entendu parler d'eux, mais l'e-mail est allé à '[email protected]'.
Il n'y a pas officielles, rapport de bug, et pourtant, vous l'appelez " vérifié bug??
Oui. C'est réplicable. C'est évident. Il s'en écarte publié comportement. Il est également apparu dans la version 1.7.0 de suite de nouvelles transparence exigences de codage. Le même code en 1.6.x fonctionne bien.
+1
OriginalL'auteur Rick Hodgin
Utilisation
com.sun.awt.AWTUtilities.setWindowOpacity(w, 0.5f)
dans le JDK 7.Voir ici.
OriginalL'auteur Sujith Themath
Salut le problème avec ce code, c'est qu'il est absent de la ligne de code suivante dans la méthode main ():
Il devrait, aller à droite après le code qui vérifie si des fenêtres translucides ne sont pas pris en charge et les sorties:
Aussi, l'image de l'uniforme translucide image est trompeuse, car elle utilise le java look and feel. Au lieu de cela, l'image doit utiliser le système Windows regarder et se sentir (en supposant que vous êtes sur Windows). Si vous essayez d'utiliser le Java look and feel (c'est à dire,
JFrame.setDefaultLookAndFeelDecorated(false);
), alors qu'il va jeter la même erreur qu'avant. J'espérais que la fenêtre translucide continuerait de travailler avec le Java look and feel, mais je ne pense pas que ce soit possible.pour moi, le paramètre JFrame.setDefaultLookAndFeelDecorated(true) permet d'éviter l'erreur en question (assurez-vous de le faire avant la création de l'image, voir docs.oracle.com/javase/6/docs/api/javax/swing/...
JFrame.setDefaultLookAndFeelDecorated(vrai) et JDialog.setDefaultLookAndFeelDecorated(vrai) uniquement avec certains LookAndFeels. Le WindowsLookAndFeel par exemple, ne semblent pas l'utilisation de ces Propriétés.
OriginalL'auteur kimbaudi
Je pense que vous devez setUndecorated avant setBackground cela permettra de résoudre le problème
OriginalL'auteur Benjemaa