减少Swing中JWebBrowser的重叠

时间:2012-07-23 11:46:33

标签: java swing

我正在开发基于Swing的应用程序。

我的问题是我使用JWebBrowser并将其放在可滚动的面板中。当我向下滚动面板时,Web浏览器与应用程序的面板/框架重叠。

我该怎么做才能使浏览器与面板重叠?

1 个答案:

答案 0 :(得分:1)

我在这里看不到答案,所以作为一个走在这条坎坷路上的人,我可以同情这些问题,并希望提供一些指导。

首先,JWebBrowser是一个AWT重量级组件,并且在Swing中不能很好地运行(因为它使用轻量级组件)而没有一些干预。

为友好Swing集成的第一步实例化JWebBrowser

new JWebBrowser(NSComponentOptions.destroyOnFinalization(),
                NSComponentOptions.constrainVisibility(),
                NSComponentOptions.proxyComponentHierarchy())

单独的实例化应该可以防止浏览器与Swing轻量级组件重叠,但是,除非您执行一些额外的步骤,否则它将无法像透明度或图层那样工作。

因此,在施工期间,请致电:

webBrowser.setDoubleBuffered(true);
webBrowser.getNativeComponent().createBackBuffer();

然后,在Web浏览器与任何透明度或图层一起使用之前,请调用以下内容:

rects[0] = webBrowser.getBounds();
webBrowser.getNativeComponent().updateBackBuffer(rects);

这些调用将在使用组件之前重新绘制后备缓冲区,因此在使用时,它将与最新的后备缓冲区一起显示,并且在那时看起来非常像常规的Swing组件。

所有这些都有一些细微差别,但这是基础,应该足以让任何人开始使用它。