JLayeredPane中的组件重叠

时间:2011-07-08 17:14:33

标签: java swing jlayeredpane

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

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

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层。

2 个答案:

答案 0 :(得分:6)

我敢打赌,即使JWebBrowser最终从JPanel派生出来,它表现为一个带有一些原生组件的重量级组件。如果是这样,您可以做的事情有限制,您可能想要阅读更多关于在Swing应用程序中混合重量和轻量级组件的更多信息:Mixing Heavy and Light Weight Components

答案 1 :(得分:2)

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

查看演示应用程序以查看各种集成案例,更具体地说,请参阅其他功能部分。