3

Swing コンポーネント内でホストされている複雑な SWT UI を実行しようとした経験がある人がいるかどうか疑問に思っていました。

私は非常に簡単なデモを行うことができましたが、他の誰かがこれを試みて失敗/成功した場合、彼らの経験から学ぶことは素晴らしいことです.

繰り返しますが、私のアプリケーションは Swing アプリであり、複雑な SWT UI コンポーネント (ドラッグ アンド ドロップ、ポップアップ ウィンドウとダイアログ) を利用したいのですが、これを管理した人はいますか?

4

2 に答える 2

3

私は Swing と SWT の両方を使用したことがありますが、同じアプリケーション/プロジェクトでは使用したことがありません。

同じウィンドウ内でコンポーネントを混在させようとしない限り、特定のウィジェット セットを使用して完全に個別のウィンドウ/ダイアログを作成できない理由はわかりません。ただし、単一のウィンドウ内で SWT と Swing を混在させようとすると、うまくいかないか、少なくとも多くの問題が発生する可能性があります。これは、両方のウィジェット セットが描画/レイアウトの完全に異なる手段に依存しているためです。Swing のコンポーネントはすべて Java 内で直接処理され、基盤となる OS から完全に分離されていますが、SWT は、GUI レンダリングのすべて (またはほとんど) を基盤となる OS に明示的に依存しています。2 つを混在させようとすると、あらゆる種類の問題が発生する可能性があります。

もちろん、「これは推奨される方法ではありません」という通常の回答も破棄します。ここで本当に具体的な目標を念頭に置いている場合を除き、同じアプリケーションに異なるウィジェット セットを混在させることはお勧めできません。Swing と SWT には、まったく異なる 2 つの哲学と基礎となるアーキテクチャがあります。実際、SWT は、IBM/OTI が Swing で採用されたアプローチを好まなかったため、独自のウィジェットを実装することを選択したという事実から生まれました。GUI ウィジェットに対するこのような対照的なアプローチでは、2 つを混ぜ合わせるよりも、1 つだけを選択してそれに固執する方がよいでしょう。

于 2009-03-17T12:21:50.920 に答える
2

Swing と SWT を混在させるのは最善の方法ではありませんが、選択肢がなければ、殺すのはそれほど難しいことではありません。コード全体にいくつかのルール/標準を適用してみてください。例えば。すべてのダイアログを Swing に保持する (理由がなければ両方を混在させないでください)、命名規則を使用して Swing コンポーネントと SWT コンポーネントを区別するなど。コンポーネントは、複雑な UI の問題に取り組み始める前に、OS/JVM によって処理されます。

注意すべきことの 1 つは、Swing コンポーネントと SWT コンポーネント間のドラッグ アンド ドロップです。少しトリッキーですが、カスタム データ型を投入し始める場合は特にそうです。

于 2009-05-11T06:41:01.760 に答える