如何使一个JPanel在另一个JPanel中扩展到最大宽度

2022-09-03 05:08:17

我觉得我需要稍微改写一下这个问题。

在下面更新了问题。

我有一个JPanel,其中包含:

myjpanel.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));

它包含以下三个面板:

具有固定大小“x”和“y”的JPanel

没有固定尺寸的JPanel

JPanel,没有固定的尺寸和小高度

第二个JPanel包含一个JTable,因此它扩展以填充整个高度,并按预期将底部面板一直向下推。

喜欢这个:

t
t
m
m
m
m
m
b

t = 顶部面板,m = 中间面板,b = 底部面板。

这行得通。但是底部面板并不像填充父面板的整个宽度,这是一个问题。

ttt
mmm
 b 

我想要这个,其中面板填充整个宽度:

ttt
mmm
bbb

或者这个,其中底部面板左居中:

ttt
mmm
b

下面的老问题:

我有一个JPanel,其中包含:

.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));

在其中,还有三个JPanels。前两个是固定大小,中间一个不是。

我希望我的底部面板只采用它需要的高度,但使用外部JPanel的所有可用宽度。

我尝试过使用胶水,但无济于事,我宁愿不设置首选和最小/最大尺寸。有没有办法告诉组件仅使用布局管理器和框架“填充整个父宽度”。我宁愿不开始做像设置大小和覆盖方法这样的黑客。

注意:我不能在内面板上放任何胶水或填充物,只能修改外面板及其布局管理器。

尝试 1:

使用未产生预期结果。它制作了一个这样的网格:myPanel.setLayout(new GridLayout(3, 1));

XX
 X

但我期望:

X
X
X

尝试 2:

使用未产生预期结果。它制作了一个这样的网格:myPanel.setLayout(new GridLayout(0,1));

x
x
x

但所有面板的尺寸都相同,忽略了限制。


答案 1

最简单的方法是使用另一个布局管理器,例如自动调整组件大小以填充父容器的布局管理器。GridLayout

myPanel.setLayout(new GridLayout(0, 1));

答案 2

如果使用 a 并且面板位于 或 它确实填充了整个宽度。BorderLayoutbSOUTHPAGE_END


推荐