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

标签 java swing jpanel layout-manager boxlayout

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

更新了下面的问题。

我有一个 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/

相关文章:

java - 如何在java中添加超过3个面板的GUI

java - 将 JPanel 设置为另一个类的新 JPanel

java - 从加载的类文件运行方法?

java - javax.crypto.Cipher 的问题

java - java.awt.Color 和 javafx.scene.paint.Color 之间的区别

java - 尝试返回到以前的 JFrame 时遇到困难

Java Eclipse Swing 设计

java - JScrollPane 的奇怪问题 - 尽管使用了 : setVerticalScrollBarPolicy(JScrollPane. VERTICAL_SCROLLBAR_​​ALWAYS,但滚动条未显示;

java - 如何在 GridLayout 中管理多个菜单?

java - JPanel 由 textFields 组成