获取 JScrollPane 中显示的组件

2024-04-12

我有一个包含 JPanel 的 JScrollPane。我用许多按钮填充了这个 JPanel。

是否有可能获取当前显示的按钮?

我知道我可以通过以下方式访问 JPanel 的子项jpanel.getComponents()但这些都是此窗格中的所有组件;我只想要当前屏幕上的内容。


正如已经评论@mKorbel 的答案:

  • 您需要子边界是正确的
  • 您需要将这些边界与“某物”相交是正确的
  • it's wrong您需要包含视口(也不需要滚动窗格)

JComponent 有一个 API 可以获取当前可见部分,而不管它们当前显示的方式/位置,因此“某物”是 JComponent 的visibleRect:

Rectangle visibleRect = myPanel.getVisibleRect();
for (Component child : myPanel.getComponents()) {
   Rectangle childBounds = child.getBounds();
   if (childBounds.intersects(visibleRect)) {
       // do stuff
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 JScrollPane 中显示的组件 的相关文章

随机推荐