我觉得我需要稍微改一下这个问题。
更新了下面的问题。
我有一个 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));
在其中,还有另外三个 JPanel。前两个是固定大小的,中间一个不是。
我希望我的底部面板只采用它需要的高度,但使用外部 JPanel 的所有可用宽度。
我曾尝试使用胶水但无济于事,我宁愿不设置首选尺寸和最小/最大尺寸。 有没有办法只使用布局管理器和框架告诉组件“填充整个父级宽度”。我宁愿不开始做一些 hack,比如设置大小和覆盖方法。
注意:我不能在内面板中放置任何胶水或填充物,只能修改外面板及其布局管理器。
尝试 1:
使用 myPanel.setLayout(new GridLayout(3, 1));
没有产生预期的结果。它制作了这样的网格:
XX
X
但我预计:
X
X
X
尝试 2:
使用 myPanel.setLayout(new GridLayout(0,1));
没有产生预期的结果。它制作了这样的网格:
x
x
x
但所有面板的尺寸都相同,忽略了限制。
最佳答案
最简单的方法是使用另一个布局管理器,例如 GridLayout
,它会自动调整组件的大小以填充父容器。
myPanel.setLayout(new GridLayout(0, 1));
关于java - 如何使一个 JPanel 在另一个 JPanel 中扩展到最大宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259543/