Mar*_*sen 12 java swing jpanel layout-manager boxlayout
我觉得我需要稍微改一下这个问题.
更新了以下问题.
我有一个JPanel包含:
myjpanel.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));
Run Code Online (Sandbox Code Playgroud)
它包含以下三个面板:
固定大小为'x'和'y'的JPanel
JPanel没有固定的大小
JPanel没有固定的尺寸和小的高度
第二个JPanel包含一个JTable,因此它会扩展以填充整个高度,并按预期方式将底部面板完全按下.
像这样:
t
t
m
m
m
m
m
b
Run Code Online (Sandbox Code Playgroud)
t =顶部面板,m =中间面板,b =底部面板.
这样可行.但是底部面板不像填充父级的整个宽度那样是一个问题.
ttt
mmm
b
Run Code Online (Sandbox Code Playgroud)
我想要这个,面板填充整个宽度:
ttt
mmm
bbb
Run Code Online (Sandbox Code Playgroud)
或者,底部面板保持居中的位置:
ttt
mmm
b
Run Code Online (Sandbox Code Playgroud)
老问题如下:
我有一个JPanel包含:
.setLayout(new BoxLayout(selectors, BoxLayout.PAGE_AXIS));
Run Code Online (Sandbox Code Playgroud)
在其中,还有三个JPanels.前两个是固定大小而中间一个不是.
我希望我的底部面板只占用它所需的高度,但使用外部JPanel的所有可用宽度.
我尝试过使用胶水,但无济于事,我宁愿不设置首选和最小/最大尺寸.有没有办法告诉组件只使用布局管理器和框架"填充整个父级宽度".我宁愿不开始做像设置大小和重写方法的黑客.
注意:我不能在内部面板中放置任何胶水或填充物,只能修改外部面板及其布局管理器.
尝试1:
使用myPanel.setLayout(new GridLayout(3, 1));没有产生预期的结果.它做了一个像这样的网格:
XX
X
Run Code Online (Sandbox Code Playgroud)
但我预计:
X
X
X
Run Code Online (Sandbox Code Playgroud)
尝试2:
使用myPanel.setLayout(new GridLayout(0,1));没有产生预期的结果.它做了一个像这样的网格:
x
x
x
Run Code Online (Sandbox Code Playgroud)
但是所有面板的尺寸都相同,忽略了限制.
Rei*_*eus 15
最简单的方法是使用另一个布局管理器,例如GridLayout自动调整组件大小以填充父容器.
myPanel.setLayout(new GridLayout(0, 1));
Run Code Online (Sandbox Code Playgroud)
如果使用a BorderLayout并且b面板位于SOUTH或者PAGE_END它确实填满整个宽度.