这是一个棘手的问题 :)
基本上,我有一个GridBagLayout,其中有两列:每个列中都有一个列表(list),并且用scrollpane包装。这些滚动窗格在 BOTH 方向上被拉伸。
如果我逐渐减少此面板的高度(通过拖动窗口的边缘),则会看到滚动窗格上发生“随机”调整大小:
如果您用 tree 替换右侧列表,则会表现出不同的行为: 将窗口高度缩小到380-ich px以下,树会被调整大小...
如果我不包装我的组件,则无论如何调整窗口大小,树都会被调整大小!
你们有任何想法是怎么回事吗?
PS:我试图构建的实际布局比这个示例更复杂。同时,我使用SpringLayout来做我想要的事情,但需要设置太多(不太美观)的东西。
基本上,我有一个GridBagLayout,其中有两列:每个列中都有一个列表(list),并且用scrollpane包装。这些滚动窗格在 BOTH 方向上被拉伸。
如果我逐渐减少此面板的高度(通过拖动窗口的边缘),则会看到滚动窗格上发生“随机”调整大小:
当第一个水平滚动条出现时,第二个的宽度会减小
然后,第二个的宽度又因无法确定的原因而缩小...
如果您用 tree 替换右侧列表,则会表现出不同的行为: 将窗口高度缩小到380-ich px以下,树会被调整大小...
如果我不包装我的组件,则无论如何调整窗口大小,树都会被调整大小!
你们有任何想法是怎么回事吗?
PS:我试图构建的实际布局比这个示例更复杂。同时,我使用SpringLayout来做我想要的事情,但需要设置太多(不太美观)的东西。
protected static ListModel newListModel(int n) {
DefaultListModel lm = new DefaultListModel();
for (int i = 0; i < n; ++i)
lm.addElement("AAA");
return lm;
}
protected static JComponent createContentPane() {
JPanel pane = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER;
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = 1;
gbc.weighty = 1;
gbc.gridy = 0;
gbc.gridx = 0;
pane.add(new JScrollPane(new JList(newListModel(12))), gbc);
++gbc.gridx;
pane.add(new JScrollPane(new JList(newListModel(4))), gbc);
return pane;
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.getContentPane().add(createContentPane());
f.setSize(800, 400);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
f.setVisible(true);
}