3

awtとswingを混在させることは、JavaでのGUIプログラミングにとって実際には良いアプローチではないことをSOで読みました。ただし、swing の使用中に一部の awt コンポーネントを使用しない例を見つけることはできません。たとえば、swing を使用している場合でも、私が遭遇したほとんどの例では、レイアウトとイベント処理に awt が使用されます。

そうは言っても、Java を使用した GUI プログラミングで、swing と awt を混在させないというのはどういう意味ですか? ボタン、キャンバスなどのグラフィカル ウィジェットを swing と awt から同時に借用しないということですか、それとも、swing または awt を完全に単独で使用するということですか? それとも、swing とイベント処理のグラフィック ユニット (ボタン、パネルなど) と awt のレイアウトを使用しても問題ありませんか?

ほとんどの場合、インポートは少なくとも次のようになります。

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

私は間違っているかもしれませんが、私は Java GUI が初めてなので、awt なしで完全にスイングを使用したり、これを間違った方法で見たりする例を見たことがありません。

4

1 に答える 1

5

Swing を使用する場合は、AWT レイアウト、アクション リスナーなどを使用します。これは問題ありません。設計上、Swing フレームワークはこの点で AWT に基づいて構築されています。これは、それ自体が完全な GUI フレームワークであり、独自のレイアウト、イベント ハンドラーなどを含む JavaFX とは対照的です。

可能な限り避けるべきことは、GUI に配置する実際のコンポーネントを混在させることです。たとえば、(JFrame ではなく) Frame 内で JButton を使用したり、Button と JButton を並べて使用したりします。

通常の埋め込みビデオ プレーヤーを使用する場合、たとえば、Swing アプリケーションで VLCJ を使用する場合、重量 (AWT) キャンバスが必要になる場合があります。ただし、上記のような適切なユースケースがなければ、避けるべきものです。

于 2013-09-20T14:01:31.460 に答える