JComponent.isShowing()和isDisplayable()之间的区别

keu*_*leJ 10 java swing jcomponent

Component.isShowing()和之间有什么区别Component.isDisplayable()?我想用它们来决定我应该停止/启动一个Timer.

Pr0*_*m3r 11

组件
isShowing()何时

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

isShowing()是递归的检查所有父组件,也不过isDisplayable()isVisible()仅验证组件的状态,而不是其父母的那种状态.

这意味着您的组件当前显示在框架,面板等的屏幕上
setVisible(true)- > isShowing()返回true(在大多数情况下)
setVisible(false)- > isShowing()返回false(在所有情况下)

isDisplayable() 什么时候

确定此组件是否可显示.组件连接到本机屏幕资源时可显示.

当组件添加到可显示的包含层次结构中或当其包含层次结构可显示时,组件可显示.当包含层次结构打包或使其可见时,可以显示包含层次结构.

从可显示的包含层次结构中删除组件或使其包含层次结构不可显示时,组件将不可显示.当处置其祖先窗口时,使包含层次结构不可显示.

这意味着您的组件处于可以在屏幕上显示的状态,但不需要当前在屏幕上显示处于某种displayable状态.例如,即使setVisible(false)之前被称为组件(所以该组件是"隐形")的成分仍然是displayableisDisplayable()将返回true.