PeteBrew
PeteBrew

Reputation: 434

How do I shrink a Miglayout row height to zero when I hide components

I have a simple Miglayout dialog with rows consisting of JLabels and JTextFields. The visiblility of a number of the components is set depending on the circumstances. However, when they are hidden the row height remains the same leaving a blank area.

I have set the min row height to 0px and also have other rows set to 'grow', but this doesn't seem to help. Surely, if a row can be 0px high and its contents are hidden, then it should shrink shouldn't it? Obviously I'm missing something!

Any help much appreciated.

Upvotes: 5

Views: 2520

Answers (3)

Zach
Zach

Reputation: 325

You can set the hidemode of the layout to prevent invisible components from affecting the layout.

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

Sets the default hide mode for the layout. This hide mode can be overridden by the component constraint. The hide mode specified how the layout manager should handle a component that isn't visible. The modes are: 0 - Default. Means that invisible components will be handled exactly as if they were visible. 1 - The size of an invisible component will be set to 0, 0. 2 - The size of an invisible component will be set to 0, 0 and the gaps will also be set to 0 around it. 3 - Invisible components will not participate in the layout at all and it will for instance not take up a grid cell.

Upvotes: 6

PeteBrew
PeteBrew

Reputation: 434

Why is it that I can only find answers to my problems after I post queries online? Seems I overlooked the following QA: Force MigLayout shrink like GridBagLayout for hidden Objects

Upvotes: 3

Garrett Hall
Garrett Hall

Reputation: 30042

You may need to call panel.revalidate() to layout the components after their visibility changes.

Upvotes: 1

Related Questions