【问题标题】:Binding JPanel's width to JScrollPane's width to prevent auto resize将 JPanel 的宽度绑定到 JScrollPane 的宽度以防止自动调整大小
【发布时间】:2020-11-05 22:39:21
【问题描述】:

我的代码看起来像这样:

JPanel panel = new JPanel();
JScrollPane scrollPane = new JScrollPane();
scrollPane.setViewportView(panel);
scrollPane.setHorizontalScrollBarPolicy(
           JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

当面板中的组件变得太宽时,会出现scrollPane 中的水平滚动条,用户必须向左或向右滚动。问题是,panel 中的组件实际上是可以调整大小的,但是因为它是 JScrollPane,所以它会最大化。

问题:有什么方法可以将面板的宽度属性绑定到scrollPane 的宽度属性?这样panel里面的组件就不会超过panel的宽度?

下面是它的样子:

水平滚动条策略设置为从不,滚动条消失,但面板宽度保持不变,但现在面板的一部分不再可见。

【问题讨论】:

标签: java swing jpanel jscrollpane


【解决方案1】:

您可以使用setHorizontalScrollBarPolicysetVerticalScrollBarPolicy 方法或从构造函数JScrollPane(Component, int, int) 更改滚动条策略

引用the Oracle documentation,政策是:

  • VERTICAL_SCROLLBAR_​​AS_NEEDED
  • HORIZONTAL_SCROLLBAR_​​AS_NEEDED
  • VERTICAL_SCROLLBAR_​​ALWAYS
  • HORIZONTAL_SCROLLBAR_​​ALWAYS
  • VERTICAL_SCROLLBAR_​​NEVER
  • HORIZONTAL_SCROLLBAR_​​NEVER

【讨论】:

  • 您好,我尝试了您的建议,结果如我的编辑所示。滚动条不再存在,但 jscrollpane 中的面板的宽度仍然超过了 jscrollpane,因此面板的一部分现在不再可见。
猜你喜欢
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 2015-09-05
  • 1970-01-01
相关资源
最近更新 更多