Когда отдельные компоненты макета, управляемого GridBagLayout, невидимы, расположение остальных компонентов в макете постоянно меняется. GridBagLayout, по-видимому, «сворачивает» ячейки с невидимыми компонентами, заставляя другие компоненты менять позиции. Это очень раздражающее поведение, и я искал способ удержать его от этого.
Один из методов, которые я попробовал, - это добавить разделитель в одну и ту же ячейку с фиксированным размером, равным предпочтительному размеру компонента, который может быть скрыт, но если этот предпочтительный размер когда-либо изменится, это будет много проблем, чтобы сохранить распорку в синхронизации.
Есть ли способ лучше?
На самом деле, было бы не так плохо, если бы GridBagLayout действительно полностью игнорировал ячейки с невидимыми компонентами, но он по-прежнему учитывает вставки ячейки, так что если у вас есть расположение полей ввода и вы используете аккуратно расположенные вставки между ними обычные промежутки, затем скрытие одного компонента в середине удаляет его из компоновки, но оставляет зазор, что обычно означает, что окружающие компоненты сливаются вместе, но между ними образуется отвратительный двойной ширины ...