Comment appeler setUndecorated() après qu'une image est visible?
Dans mon application Swing, je veux avoir la possibilité de basculer entre les décorés ou non, sans recréer de la totalité de l'image. Toutefois, l'API ne les laissez pas m'appeler setUndecorated()
après l'image est visible.
Même si je l'appelle setVisible(false)
, isDisplayable()
renvoie toujours vrai. L'API dit que la seule façon de faire un cadre non-affichables est de re-créer. Cependant, je ne veux pas recréer l'image tout simplement pour passer quelques barres de titre.
Je fais un plein affichables application qui peut être commuté entre le plein écran et fenêtré modes; Il devrait être en mesure de passer tout en maintenant l'état, etc.
Comment puis-je faire une fois qu'une image est visible?.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. Cela a été mon expérience quand j'ai essayé d'atteindre le même.
Toutefois, si vous avez toute votre INTERFACE utilisateur d'un panneau, qui est à votre image, vous pouvez créer un nouveau cadre et d'ajouter que le panneau de l'image. Pas beaucoup de travail.
Quelque chose comme ceci:
En Balancer un groupe de travail (et, en effet, une instance de composant), ne peut être que dans une seule image à la fois, de sorte que lorsque vous l'ajoutez à un nouveau cadre, il cesse immédiatement d'être dans l'ancien cadre.
dispose()
communiqués de la fenêtre native de ressources. ensuite, vous pouvez modifier les propriétés comme la nudité et ainsi de suite. avecpack()
vous recréer la fenêtre de ressources. puis il suffit d'appelersetVisible(true)
et tout fonctionne bien (la position et tous les compoenents à ne pas modifier)Avez-vous essayé d'appeler
Frame.dispose()
et ensuite de le changer? N'ai pas essayé moi-même, mais il pourrait fonctionner.Si non, alors ce que vous pouvez faire est d'avoir l'image d'un insignifiant partie de la classe, avec le minimum de crochets pour le plus haut niveau du panneau ou de panneaux nécessairement, et il suffit de déplacer ceux de la nouvelle image. Tous les enfants vont suivre.
Ont un coup d'oeil à https://tvbrowser.svn.sourceforge.net/svnroot/tvbrowser/trunk/tvbrowser/src/tvbrowser/ui/mainframe/MainFrame.java
Dans La Méthode
switchFullscreenMode()
:Fait, il y a beaucoup plus de choses en cours pour masquer les différents panneaux latéraux qui réapparaissent si la souris touche les côtés.
Notez également que vous devez définir explicitement les limites.
Window.setExtendedState(MAXIMIZED_BOTH)
interfère mal en temps opportun proximité de disposer(), parce qu'ils reposent tous deux sur plusieurs native des événements du système d'exploitation, qui sont perdus, la fenêtre doit pas être affichables en une fraction de seconde.Je ne recommande pas de prendre de la valeur par défaut de l'écran directement:
et au lieu d'utiliser l'Écran de votre JFrame est actuellement sur:
Si c'est actuellement le même, il pourrait changer dans l'avenir.
appel
dispose()
communiqués de la fenêtre native de ressources. ensuite, vous pouvez modifier les propriétés comme la nudité et ainsi de suite. puis il suffit d'appelersetVisible(true)
de recréer la fenêtre de ressources et tout fonctionne bien (la position et tous les compoenents à ne pas modifier)Bien, vous allez avoir besoin d'image différente de l'instance. Vous pouvez être en mesure de déplacer le contenu de votre image sur sans de les recréer. La clé ici est de rendre votre code ne pas être tributaire d'une image spécifique. C'est une bonne pratique de base en tout cas.
Essayer:
Check it Out. J'espère que ça aidera !!
Voici un code dans la façon de faire ALT + Entrée entre en Plein Écran sans la barre de mode et de Minimiser montrant la barre de Titre et la barre de Démarrage: