如何检查JScrollPane中的JComponent对用户是否可见?

Nik*_*sov 5 java swing visibility jcomponent jscrollpane

想象一下,你有一个JScrollPane或多个JLabels或任何其他JComponents添加到它.

您如何检查某个组件是否可见/部分可见/用户不可见?(滚动)

我试过谷歌,但找不到一个简单的解决方案.是否有一些现有的方法我缺少或我们必须处理坐标和矩形比较?

UPD:以下内容不适用于我的情况.它似乎与JLabel.setVisible(true/false)有关,但不在JScrollPane中

JLabel.isVisible();
Run Code Online (Sandbox Code Playgroud)

kle*_*tra 12

看看JComponent java doc:

Rectangle r = child.getVisibleRect();
if (r.getSize().equals(child.getSize() {
   // fully visible
} else if (r.isEmpty()) {
   // not visible
} else {
  // partly visible
}
Run Code Online (Sandbox Code Playgroud)

编辑

改变了不可见的条件使用Rectangle api - 感谢@mKorbel提醒我:-)