【发布时间】:2014-07-02 00:22:03
【问题描述】:
我想要一个串联的JPanels 的“列表”,其中每个单元格都有对应的JPanel 的大小。例如:
在本例中,Panel1 的 setPreferredSize 小于 Panel2 的 setPreferredSize。拼接 JPanel 的结果就是上图。
我想过做一个gridbaglayout,但我找不到一种方法来保持每个面板的setPreferredSize 的尺寸......现在我所拥有的是单元格之间的重量比......
gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[]{0, 0};
gridBagLayout.rowHeights = new int[]{0, 0, 0};
gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[]{1.0, 9.0, Double.MIN_VALUE};
setLayout(gridBagLayout);
p1 = new Panel1();
p2 = new Panel2();
GridBagConstraints gbc_p1 = new GridBagConstraints();
gbc_p1.insets = new Insets(0, 0, 0, 0);
gbc_p1.fill = GridBagConstraints.BOTH;
gbc_p1.gridx = 0;
gbc_p1.gridy = 0;
add(p1, gbc_p1);
GridBagConstraints gbc_p2 = new GridBagConstraints();
gbc_p2.fill = GridBagConstraints.BOTH;
gbc_p2.gridx = 0;
gbc_p2.gridy = 1;
add(p2, gbc_p2);
【问题讨论】:
-
我不清楚功能。您想要一个面板列表及其大小,并使用它沿一个方向以任意顺序连接任意数量的面板?
-
@user1803551 我只想垂直连接 JPanel 并保持其 setPreferredSize() 大小。我会改标题
-
如果您不想影响组件的宽度或高度,请更改行/列权重或
fill属性并将GridBagConstraintsgridwidth属性设置为GridBagConstraints.REMAINDER。 ..或使用 SwingLab 的 SwingX 库中的VerticalLayout... -
@MadProgrammer 我应该将行/列权重或
fill更改为什么?我试图删除fill行,但它似乎将我的面板调整为 10x10 像素的大小。当我删除 rowWeights / columnWeights 行时发生了同样的事情。 -
但这不是您想要的吗?那是
GridBagLayout尊重面板的首选尺寸
标签: java swing jpanel layout-manager gridbaglayout