将 JLabel 添加到面板时,JScrollPane 不会变大

JScrollPane not getting larger when JLabels are added to panel

我的问题是,虽然滚动条出现在我想要的特定面板上,但它不会随着标签的添加而扩展。我希望它在标签开始离开要添加到的面板时延长。

我有一个使用 GridBagLayout 的主 JPanel 'panel',其中我还有 5 个其他面板,需要滚动条的是 boardPanel,它的 setLayout() 值为 null

panel = new JPanel();
panel.setLayout(new GridBagLayout());

...


1Panel = new JPanel();
1Panel.setPreferredSize(new Dimension(480, 800));
1Panel.setLayout(null);
scrollPanel = new JScrollPanel(1Panel, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

...

c.weighty = 1.0;
c.weightx = 0.6;
c.gridx = 0;
c.gridy = 0;
c.gridheight = 3;
panel.add(scrollPanel, c);

...

我希望这些信息足够了,非常感谢您的提前帮助。

不要使用空布局!!!

不要使用 setPreferredSize()!!!

当组件的首选大小大于滚动窗格的大小时,将出现滚动条。通过对大小进行硬编码,您会破坏此功能。

使用布局管理器,当您向面板添加组件时,首选大小会动态变化。

阅读 Layout Managers

上的 Swing 教程