Swingをベースにしたアプリケーションを開発しています。
私の問題は、JWebBrowserを使用していて、スクロール可能なパネルに配置していることです。パネルを下にスクロールすると、Webブラウザーがアプリケーションのパネル/フレームと重なります。
ブラウザがパネルと重ならないようにするにはどうすればよいですか?
Swingをベースにしたアプリケーションを開発しています。
私の問題は、JWebBrowserを使用していて、スクロール可能なパネルに配置していることです。パネルを下にスクロールすると、Webブラウザーがアプリケーションのパネル/フレームと重なります。
ブラウザがパネルと重ならないようにするにはどうすればよいですか?
ここで答えが見えないので、この困難な道を歩んできた者として、私はこれらの問題に共感し、いくつかのガイダンスを提供したいと思います.
まず第一に、JWebBrowser
は AWT の重量級コンポーネントであり、(軽量コンポーネントを使用しているため) なんらかの介入なしでは Swing でうまく動作しません。
JWebBrowser
フレンドリーな Swing 統合の最初のステップとして、次のようにインスタンス化します。
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 コンポーネントのように見えます。
これにはいくつかのニュアンスがありますが、それは基本であり、誰でも始めるには十分なはずです.