【问题标题】:JScrollPane not getting larger when JLabels are added to panel将 JLabels 添加到面板时,JScrollPane 不会变大
【发布时间】:2015-06-11 07:04:07
【问题描述】:

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

我有一个使用 GridBagLayout 的主 JPanel“面板”,其中我有 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);

...

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

【问题讨论】:

    标签: java swing layout jscrollpane


    【解决方案1】:

    不要使用空布局!!!

    不要使用 setPreferredSize()!!!

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

    使用布局管理器,当您将组件添加到面板时,首选尺寸会动态变化。

    阅读 Layout Managers 上的 Swing 教程

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多