【问题标题】:How to check if FlowLayout overflow?如何检查 FlowLayout 是否溢出?
【发布时间】:2015-07-28 09:26:27
【问题描述】:

FlowLayout 中如果没有空间放置组件,则其中一些移动到下一行。有没有办法以编程方式检查布局是否溢出?

【问题讨论】:

  • 我猜你应该考虑使用另一种布局,因为这是 FlowLayout 的工作原理。
  • 如果布局溢出,你到底打算做什么? (顺便说一句 - 将带有FlowLayout 的容器放在滚动窗格中,根据需要指定没有水平滚动条和垂直滚动条,它会自动处理。)
  • 我在那个面板上有一些 jbuttons。如果某些按钮进入第二行,我将隐藏按钮的文本并仅显示图标。所以我需要知道第二行是否有任何按钮。

标签: java swing layout-manager flowlayout


【解决方案1】:

您可以将ChangeListener 用于 JScrollPane

final JScrollPane jPane = new JScrollPane(yourPanel);
jPane.getViewport().addChangeListener(new ChangeListener() {

    public void stateChange(ChangeEvent e) {

        //if that is true, it means panel overflowed
        if(jPane.getHorizontalScrollBar().isShowing()) {

        }
    }

})

【讨论】:

  • 没有JScrollPane我们能做到吗?
  • 我不知道还有什么办法。
  • 我做到了,但没有使用 ChangeListener。我将面板添加到 JScrollPane,然后覆盖我的主面板的 setPreferedSize 方法。所以我正在听 setPreferedSize 方法的滚动变化。
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 2011-12-02
  • 2012-11-19
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
相关资源
最近更新 更多