11

Component.isShowing()和有什么区别Component.isDisplayable()?我想用它们来决定我是否应该停止/启动计时器。

4

3 回答 3

12

一个组件
isShowing()

确定此组件是否显示在屏幕上。这意味着组件必须是可见的,并且它必须在一个可见和显示的容器中。

isShowing()是递归的,也检查所有父组件,但isDisplayable()isVisible()验证组件的状态,而不是其父组件的状态。

这意味着您的组件当前正在屏幕上显示在 Frame、Panel 等中
setVisible(true)。-->isShowing()返回 true(在大多数情况下)
setVisible(false)-->isShowing()返回 false(在所有情况下)

isDisplayable()什么时候

确定此组件是否可显示。当组件连接到本机屏幕资源时,它是可显示的。

当一个组件被添加到一个可显示的包含层次结构中或者当它的包含层次结构变得可显示时,它就可以显示了。当其祖先窗口被打包或可见时,包含层次结构将变为可显示的。

当一个组件从可显示的包含层次结构中移除时,或者当它的包含层次结构变得不可显示时,它就会变得不可显示。释放其祖先窗口时,包含层次结构将变为不可显示。

这意味着您的组件处于可以在屏幕上显示但不需要当前在屏幕上显示的displayable状态。例如,即使setVisible(false)之前在组件上调用过(因此组件是“不可见的”),组件仍然存在displayable并且isDisplayable()将返回 true。

于 2012-08-15T12:12:51.513 回答
3

isDisplayable() 如果组件的对等点不为空(对等点是本机窗口容器),则返回 true。

isShowing() 如果组件可见(即调用了 setVisible(true) 或 show(true)),则返回 true,它的对等点是非空的,如果它也有父级,则父级也正在显示(即 isShowing()在父级上返回 true)。

于 2012-08-15T12:11:35.260 回答
-1

据我了解,如果组件可见,则 Component.isShowing() 返回 true,如果组件处于可显示层次结构中,则 Component.isDisplayable() 返回 true,这意味着它可以显示。我认为方法名称本身就可以说明问题。

于 2012-08-15T12:10:51.297 回答