1

これは奇妙な動作であり、写真がないと説明が難しいため、最善を尽くします。

私のアプリケーションには SWT ブラウザ ウィジェットが組み込まれており、アプリケーションはクロス プラットフォームです。Windows で完璧に動作しますが、Mac OS X 10.4 以降をサポートする必要があります。ブラウザー ウィジェットは右側のコンポジット内にあり、別のコンポジット内のファイル ツリーは左側にあります。ユーザーがツリーからファイルをクリックすると、ファイルが復号化されてブラウザーに表示されます。

現在、Mac 10.4.11 でアプリをテストしていますが、この奇妙な動作は、シェル ウィンドウのサイズを変更した場合にのみ発生します。コンポジットとブラウザ ウィジェット自体のサイズが適切に変更されます。オブジェクトの境界/境界を確認できます。問題は、ブラウザ内にあるはずの画像です-シフトします(表示された画像がブラウザの左上隅に固定されていないかのように)。上から下に配置され、画像自体は正しいサイズですが、サイズ変更が完了すると画像が移動します。アプリは、最初に読み込まれたときは問題なく (画像が完全に配置されていることを意味します)、ファイル ツリーが非表示になっていてブラウザー/コンポジットが完全なシェルを使用している場合も問題なく、ファイル ツリーが復元された場合も問題なく表示されます。これが発生するのはサイズ変更中のみです。

意味があったことを願っています。何か案は?

4

1 に答える 1

3

わかりました。これが私が最初に持っていたものです(疑似コードで):

webBrowser.setSize(shell.width, shell.height);

webComposite.getParent().layout();

ファイル ツリーを復元したときと同じ方法で、ブラウザーとそのコンポジットをほとんど復元する必要があったことがわかりました (そのアクションの後にサイズが正しくなっていることを知っていたからです)。上記のコードは次のコードに置き換えられました。

webComposite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true));

webComposite.setBounds(widthOfTreeComposite, 0, shell.width, shell.height);

webComposite.setSize(shell.width, shell.height);

webBrowser.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true));

webBrowser.setBounds(0, 0, shell.width, shell.height);

于 2009-05-29T15:17:43.103 に答える