5 votes

Comment réduire la hauteur d'une ligne Miglayout à zéro lorsque je masque des composants ?

J'ai une simple boîte de dialogue Miglayout dont les lignes sont constituées de JLabels et de JTextFields. La visibilité d'un certain nombre de composants est définie en fonction des circonstances. Cependant, lorsqu'ils sont masqués, la hauteur de la ligne reste la même, laissant une zone vide.

J'ai défini la hauteur minimale des lignes à 0px et j'ai également défini d'autres lignes pour qu'elles s'agrandissent, mais cela ne semble pas aider. Si une rangée peut avoir une hauteur de 0px et que son contenu est masqué, elle devrait rétrécir, n'est-ce pas ? Il est évident que quelque chose m'échappe !

Toute aide est la bienvenue.

6voto

Zach Points 175

Vous pouvez définir le hidemode de la mise en page pour empêcher les composants invisibles d'affecter la mise en page.

De http://migcalendar.com/miglayout/cheatsheet.html :

Définit le mode de masquage par défaut pour la mise en page. Ce mode de masquage peut être remplacé par la contrainte du composant. Le mode de masquage indique comment le gestionnaire de disposition doit traiter un composant qui n'est pas visible. Les modes sont les suivants : 0 - Défaut. Signifie que les composants invisibles seront traités exactement comme s'ils étaient visibles. 1 - La taille d'un composant invisible est fixée à 0, 0. 2 - La taille d'un composant invisible sera fixée à 0, 0 et les espaces seront également fixés à 0 autour de lui. 3 - Les composants invisibles ne participeront pas du tout à la mise en page et, par exemple, ils n'occuperont pas de cellule de la grille.

3voto

PeteBrew Points 434

Pourquoi est-ce que je ne peux trouver des réponses à mes problèmes que dans les cas suivants après Je poste des requêtes en ligne ? Il semble que j'ai négligé le QA suivant : Forcer le rétrécissement de MigLayout comme GridBagLayout pour les objets cachés

1voto

Garrett Hall Points 11902

Vous devrez peut-être appeler panel.revalidate() pour mettre en page les composants après que leur visibilité ait changé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X