2

JAVAでSwingsが重い、AWTが軽いと言われるのはなぜですか?

4

4 に答える 4

13

基本的に各 AWT コンポーネントはネイティブ プラットフォーム コンポーネントであるため、AWT は「重量級」と言われています。AWT は、プラットフォームのネイティブ GUI ツールキットの上に実装されています。これは、AWT が Swing に比べてかなり制限されていた理由も説明しています。実装されている限り、最小公倍数を使用します。

一方、Swing は、トップ レベルのコンポーネント (ウィンドウなど) を除いて、ほとんどすべてが Java で実装されています。ネイティブ コンポーネントが存在する可能性があり、それらは依然として「ヘビー ウェイト」と呼ばれます。

AWT、Swing、および SWT の詳細な比較については、IBM のこのページを参照してください。

編集:あなたの言い回しでは重い/軽いが逆になっているように見えますが、それがあなたの質問だったと思います. ヘビー/ライト ウェイトは、Java GUI ツールキットのほぼ標準的な名称であるため、理解した上で行いました。(それを指摘してくれたBobbyShaftoeに感謝します)。

于 2009-03-23T04:38:51.453 に答える
1

Javaの世界では、AWTコンポーネントは、基盤となるネイティブコンポーネントを使用するため、「ヘビーウェイト」と見なされます。java.awt.Buttonのインスタンスをインスタンス化するとき、実際には、基盤となるOSにこのオブジェクトをペイントするように要求しています。

一方、Swingは、すべてのペイントをJava2D APIに依存し、基盤となるOSまたはハードウェアに委任するため、「軽量」です。これは、Swingが特定のルックアンドフィール(Windows、GTK、Motifなど)を模倣するために実際のペイントを行うすべてのUIコンポーネントを必要とする理由も説明しています。

この記事では、軽量コンポーネントと重量コンポーネントの違いについて詳しく説明します。

お役に立てれば。

于 2009-03-26T17:30:33.600 に答える
0

各「重量」コンポーネントにはネイティブ ピアがあり、「軽量」コンポーネントにはありません。AWT は重いため、Windows プラットフォームでは各 AWT ボタンに対応する MFC ボタンがあり、Unix プラットフォームでは Motif ボタンがあります。Swing は軽量なので、ボタンのグラフィックはフレームの上に描画されるだけです...下にある MFC または Motif ボタンはありません。このトピックの詳細については、Sun の Web サイトの記事Mixing Heavy and Light Componentsを参照してください。

于 2016-04-25T18:06:50.387 に答える
-1

私は質問を完全には理解していません。これが炎上戦争につながると確信していますが、おそらく AWT が「より単純な」API を提供しているためですが、それはもう少し原始的です。ただし、Swing は、API が好きな人にとっては、間違いなく非常に重い、または重いものです。AWT よりもはるかに豊富なサポートと多くのクラスがあります。

于 2009-03-23T04:30:39.567 に答える