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

时间:2012-08-15 11:51:10

标签: java swing jcomponent

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

3 个答案:

答案 0 :(得分:11)

组件
<{1}}何时

  

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

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

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

isShowing()

  

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

     

组件在添加到可显示器时可显示   包含层次结构或在其包含层次结构时   显示。包含层次结构在其可用时可显示   祖先窗口打包或可见。

     

从a中移除组件时,组件将无法显示   可显示的包含层次结构或其包含层次结构   无法播放。包含层次结构在以下时无法显示   它的祖先窗口被处理掉了。

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

答案 1 :(得分:3)

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

如果组件可见(即setVisible(true)或show(true)被调用),则isShowing()返回true,其对等体为非null,如果它也有父对象,则父对象也显示(即父上的isShowing()返回true)。

答案 2 :(得分:-1)

据我所知,如果组件可见,Component.isShowing()将返回true,如果组件处于可显示的层次结构中,则Component.isDisplayable()返回true,这意味着它可以显示。我认为方法名称本身就是代表它们。