【问题标题】:Component overlapping in JLayeredPaneJLayeredPane 中的组件重叠
【发布时间】:2011-07-08 17:14:32
【问题描述】:

我在 JLayeredPane 中添加了两个组件。
1. JWebBrowser
2. JPanel

我在不同的层中添加了 JWebBrowser 和 JPanel。 JWebBrowser 在 0 即底层,JPanel 在第一层。

m_LayeredPane.setLayer(m_WebBrowser, JLayeredPane.DEFAULT_LAYER);
m_LayeredPane.add(m_WebBrowser);
m_LayeredPane.setLayer(m_WebCamPane, JLayeredPane.PALETTE_LAYER);
m_LayeredPane.add(m_WebCamPane);

现在的问题是 JWebBrowser 层与 JPanel 层重叠。

我尝试了各种方法,例如 moveToFront() 方法、在运行时定义位置、将两个组件放在同一层并使用 componentZorder 等。但问题仍然相同。

我不确定是什么导致 JPanel 层返回 JWebBrowser 层。

【问题讨论】:

  • 你运行的是什么版本的 Java?
  • @jzd:我使用的是java版本“1.6.0_26”

标签: java swing jlayeredpane


【解决方案1】:

我敢打赌,尽管 JWebBrowser 最终派生自 JPanel,但它的行为就像带有一些本机组件的重量级组件。如果是这样,那么您可以做的事情就会受到限制,您可能想了解更多关于在 Swing 应用程序中混合重型和轻型组件的信息:Mixing Heavy and Light Weight Components

【讨论】:

  • 我也在想同样的事情。迁移到当前版本的 Java 6 应该可以解决这个问题。
  • @jzd:我听说 Java 1.6 在这方面表现更好,但我自己没有尝试过。
  • 1.6的某个版本之后,具体是哪一个我不记得了,但基本上没有问题。
  • @Hovercraft Full Of Eels:我认为你是对的。但是你能告诉我如何让轻量级组件与重量级组件重叠。
【解决方案2】:

如果 Web 浏览器是在没有任何特定选项的情况下创建的,那么它的行为就像一个重量级组件。但如果它是用某些选项创建的,它可以更好地混合。 例如:new JWebBrowser(JWebBrowser.constrainVisibility());

查看演示应用程序,了解各种集成案例,更具体地说,查看附加功能部分。

【讨论】:

  • 克里斯托弗,我想评论你的问题跟踪器,但不记得我的 SF 密码。请你回答我的SO question好吗?
猜你喜欢
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 2011-08-05
  • 2019-01-26
  • 2010-11-28
  • 1970-01-01
相关资源
最近更新 更多