当使由 GridBagLayout 管理的布局的各个组件不可见时,布局中其余组件的排列会不断变化。GridBagLayout 似乎会“折叠”具有不可见组件的单元格,从而导致其他组件更改位置。这是一种非常烦人的行为,我一直在寻找一种方法来阻止它这样做。
我尝试过的一种方法是在同一个单元格中添加一个垫片,其固定大小等于可能隐藏的组件的首选大小,但如果该首选大小发生变化,那将是很多麻烦保持垫片同步。有没有更好的办法?
实际上,如果 GridBagLayout 真的完全不考虑具有不可见组件的单元格,那也不会那么糟糕,但它仍然会考虑单元格的 insets,所以如果您有输入字段的布局并使用 insets 以常规方式整齐排列它们之间的间隙,然后将一个组件隐藏在中间将其从布局中删除但留下间隙,这通常意味着周围的组件流在一起,但它们之间有一个丑陋的两倍宽的间隙......