我正在尝试构建以下可调整大小的 JPanel:
+-----------------------+
| |
| |
| |
| |
| |
| JScrollPane |
| (containing a |
| JTable) |
| |
| |
| |
| |
| |
+-----------+-----------+
| button1 | b2 |
+-----------+-----------+
我希望 button1 和 b2 始终具有相同的宽度,这意味着当整个组件水平调整大小时,两个按钮应该获得或失去相同的宽度。按钮本身之间或按钮与面板边框之间不应有空间。也就是说,按钮应始终占据所有可用的水平空间。请注意,按钮上的文本长度不同。
当组件垂直调整大小时,我希望 JScrollPane 获得新的高度,而带有按钮的行应该始终保持相同的高度(基本上button1.getPreferedSize().getHeight()
)。
我已经尝试了一大堆不同的 LayoutManager。我得到的最接近的是将两个按钮放在一个新的 JPanel 中并将该面板的 LayoutManger 设置为 new GridLayout(0,2)
. 这至少保持了两个按钮的统一宽度并填充了所有水平空间。但是,当面板垂直调整大小时,它们仍然会改变高度。
使用 GroupLayout 等其他 LayoutManager 时,我可以通过链接按钮 ( groupLayout.linkSize(button1, b2)
) 来保持相同的宽度,但无法让它们填满整个水平空间。
实现这一目标的最佳方法是什么,应该使用什么 LayoutManager?