Comment faire pour désactiver tous les composants en Composite
Dans ma Composite, j'ai de nombreux composants, y compris d'autres JPanels, JLabels, JTextAreas, et JButtons. Parce que je veux mettre en œuvre un mode tutoriel où une autre fenêtre s'affiche et tout mon principal Composite est désactivé tant que la nouvelle fenêtre explique chaque "fonction" un par un... je veux savoir comment faire pour désactiver tous les composants qui sont à l'intérieur de mon origiinal Composite. Je sais que vous pouvez utiliser:
component.setEnabled(false);
Mais je ne veux pas l'écrire pour chaque composant dans ma Composite. Je voudrais savoir si il est possible de désactiver TOUS les composants à l'intérieur de mon Composite avec une boucle for ou quelque chose?
Remarque: Il existe également des composants imbriqués JPanels, à l'instar de la commande seraient à
Principal Composite ---> Imbriqués Composite ---> Composant
Je veux aussi que le Final des composants également être désactivé...
Merci! Toute aide est très appréciée!
setEnabled(false);
sur l'ensemble du Composite dans son ensemble? Je ne suis pas sûr si cela fonctionne ou pas.Non, il ne le fait pas, j'ai déjà essayé. Je crois setEnalbled(false) sur un Composite seulement disalbes d'entrée sur le Composite lui-même, comme mouseclicks sur le Panneau et pas les composants eux-mêmes
Essayez de prendre un coup d'oeil à JXLayer/Jlayer
OriginalL'auteur XQEWR | 2013-10-11
Vous devez vous connecter pour publier un commentaire.
Découvrez Désactivé Panneau pour un couple de solutions.
On utilise handicapés GlassPane type de démarche et de l'autre de manière récursive désactive les composants tout en garder une trace des composants à l'état actuel de sorte qu'il peut être activer correctement plus tard.
non, il n'assume pas de changement d'état va se passer pendant que le panneau est désactivé (ie. tous les composants restent désactivées). Alors, c'est juste des pistes les composants activés au moment où le panneau est désactivé. Seulement ces composants sera activé que lorsque le panneau est activé.
Bon à savoir 😉
OriginalL'auteur camickr
J'ai utilisé la fonction suivante:
OriginalL'auteur Kesavamoorthi
Un composite est un Conteneur. Conteneur a une getComponents() la méthode. Vous devez parcourir dans le volet de l'arborescence de manière récursive.
Si l'enfant est un Conteneur de trop (instanceof), vous pouvez faire un autre appel récursif, sinon vous suffit d'appeler setEnabled(false).
OriginalL'auteur acsadam0404
J'ai mis en place une solution à l'aide de
JXLayer
un peu tout à l'heure, qui l'utilise verrouillage de l'effet capacités à fournir un "blocage" de la couche sur le conteneur.Il est basé sur JXLayer 3.x et utilise les filtres de JHLabs à générer du "échelle de gris" effet
Prendre un coup d'oeil à LockableUI pour plus de détails
OriginalL'auteur MadProgrammer
Facile rapide 🙂
OriginalL'auteur SHADOW.NET
J'ai juste fait un peu de classe qui désactive tout à l'intérieur d'un Conteneur de manière récursive et, plus tard, re-permet à chaque Composant a été désactivé un peu plus tôt (dans l'ordre inverse). Il permet aussi d'exclure l'arbitraire des Composants de la désactivation, une fonctionnalité que j'ai ajouté parce que JLabels chercher inutilement laid lorsqu'il est désactivé.
Fonctionne comme un charme. Puisque le problème vient assez souvent, et il m'est arrivé de voir ce post plus tôt aujourd'hui, voici la classe:
OriginalL'auteur Dreamspace President