【问题标题】:Difference between JComponent.isShowing() and isDisplayable()JComponent.isShowing() 和 isDisplayable() 之间的区别
【发布时间】:2012-08-15 11:51:09
【问题描述】:

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

【问题讨论】:

  • 您不明白 api 文档的哪一部分?
  • 你不能显示 JComponent 不能显示

标签: java swing jcomponent


【解决方案1】:

一个组件
isShowing()when

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

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

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

isDisplayable()何时

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

当一个组件被添加到一个可视组件时 包含层次结构或其包含层次结构时 可显示的。包含层次结构在其 祖先窗口要么被打包,要么可见。

当一个组件从 可显示的包含层次结构或当它的包含层次结构是 变得无法显示。包含层次结构在以下情况下无法显示 它的祖先窗口被释放。

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

【讨论】:

  • 所以,如果我想检查组件是否对用户真正可见,我可以使用 isShowing() 吗?或者是否有可能 isShowing() 返回 true 而 isDisplayable() 返回 false?
  • no .. 你只需要检查 isShowing() ... isVisible() 也可以工作 ... isShowing() 在 isDisplayable() 返回 false 时永远不会返回 true
  • 好吧 isVisible() 可能会返回 true,即使 isDisplayable() 会返回 false 并且组件不再处于包含层次结构中......那么我将使用 isShowing()。谢谢!
  • 我认为重要的是要注意组件isShowing()方法的以下javadoc: 注意:有时无法检测组件是否对用户实际可见。这可能在以下情况下发生: - 组件已添加到可见的 ScrollPane 但组件当前不在滚动窗格的视口中。 - 该组件被另一个组件或容器遮挡。
  • 重要问题:如果组件是setVisible(true),但组件的边界在 JPanel 之外,因此用户实际上看不到它,会发生什么情况。 isVisibleisDisplayableisShowing 会输出什么?
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 错了。组件可以是可见的,但父级可能不可见。 isShowing() 也会检查父级,isVisible() 不会。
    猜你喜欢
    • 1970-01-01
    • 2021-12-25
    • 2020-05-10
    • 2014-09-20
    • 2010-10-28
    • 2015-10-04
    • 2012-08-12
    • 2011-02-18
    • 2019-12-21
    相关资源
    最近更新 更多