在尝试确定您应该使用什么布局时,您应该首先尝试确定责任范围......
例如...

根据您的需要,我可能会从GridBagLayout
. 这可能看起来很复杂,但如果你将 UI 分解为单独的组件,专注于他们的个性化需求,它应该会变得更简单......
对于左侧的面板...

我很想使用 a GridBagLayout
,仅仅是因为它允许组件在那里使用首选尺寸,但仍然允许您设置类似网格的模式......
对于箭头按钮...

这变得有点复杂,但我会使用GridLayout(2, 3)
(2 行,3 列)。这将需要在顶行的第一个和第三个位置添加一个填充面板,但仍保持按钮大小相同......
对于这个面板...

我很想使用 a GridBagLayout
,因为它可以让您跨越行甚至将其再次拆分为两个单独的面板,左侧的控件在 aGridLayout(2, 1)
中,右侧的控件BorderLayout
根据需要在 a 中。 .
对于“进度”面板...

我很想用GridBagLayout
...... 主要是因为它允许您为进度条提供比标签更多的权重。
对于主面板...

我可能很想在它自己BorderLayout
的另一个面板上使用 a ,Clear Map
让它保持它的首选大小,在NORTH
位置和地图面板中,CENTER
甚至 aGridBagLayout
取决于个别组件是什么......