[Java]AWTとSwingの概要

コンテンツ

I.はじめに

awt継承システム

container容器

共通API

 コンテナのデモ

AWTの一般的なコンポーネント

スイングの概要

スイングの利点:

SwingコンポーネントとAWTコンポーネント間の対応:


I.はじめに

これはめったに使用されないテクニックなので、ざっと見ただけです

Javaはawtとswingを使用してグラフィカルインターフェイスプログラミングを完了します

AWTのフルネームはAbstractWindowToolkitです。これはSunCompanyが提供する最も初期のGUIライブラリです。このGUIライブラリはいくつかの基本機能を提供しますが、このGUIライブラリの機能は比較的限られているため、後のSunCompanyもSwingを提供しました。AWTとSwngによって提供されるグラフィカルインターフェイスコンポーネントスライスを使用することにより、Javaのグラフィカルインターフェイスプログラミングは非常に簡単です。

awt継承システム


その中で、コンテナは、通常のコンポーネントを保持できる一種のコンテナを表す特別なコンポーネントです。
AWTにはLayoutManagerと呼ばれる非常に重要なインターフェースもあります。コンテナーに複数のコンポーネントがある場合、コンテナーはLayoutManagerを使用してこれらのコンポーネントのレイアウトを管理する必要があります。


container容器

継承システムを含む

Windowは、独立して存在できるトップレベルのウィンドウです。デフォルトでは、BorderLayoutを使用して内部コンポーネントのレイアウトを管理します
。Panelは他のコンポーネントに対応できますが、独立して存在することはできません。他のコンテナに埋め込む必要があります。デフォルトでは、FlowLayout内部コンポーネント
レイアウトデフォルトでBorderLayoutを使用して内部コンポーネントのレイアウトを管理します。 

共通API

コンポーネントは基本クラスとして、コンポーネントのサイズ、位置、および可視性を設定するために一般的に使用される次のメソッドを提供します。

 コンテナルートクラスとして、コンテナはコンテナ内のコンポーネントにアクセスするための次のメソッドを提供します

 コンテナのデモ

ctrl + bは、Frameのソースコードを調べたところ、Frameがwindowを継承しているため、オブジェクトを直接作成できることがわかりました。

public class Frame extends Window implements MenuContainer 

 運転結果

 パネルテスト

public class PanelDemo {
    public static void main(String[] args) {
        //1、创建一个window对象,因为panel以及其他的容器都不能独立存在,必须依附于window上
        Frame frame=new Frame("这是演示Panel");
        //2、创建一个Panel对象
        Panel p =new Panel();
        //3、创建一个文本框和一个按钮,并把它们放到Panel容器中
        p.add(new TextField("这里是一个测试文本"));
        p.add(new Button("这是一个测试按钮"));
        //4、把panel放到window中
        frame.add(p);
        //5、设置window的位置以及大小
        frame.setBounds(100, 100, 500, 300);
        //6、设置window可见
        frame.setVisible(true);
    }
}

 ボタンが文字化けしていることがわかりました。これは、アイデアがutf-8に設定されており、ボタンが現在のオペレーティングシステム(私のものはウィンドウ)で作成されているためです。デフォルトは中国語でgbkです。

次のように環境を構成する必要があります。

 仮想マシンオプションで、次の文を追加します。gbkと一致するようにエンコードとデコードを変更すると、文字化けした文字はなくなります。

-Dfile.encoding=gbk

走る: 

AWTの一般的なコンポーネント

 件名 特徴
 ボタン ボタン
 キャンバス  描画用のキャンバス
 チェックボックス    チェックボックスコンポーネント(ラジオボタンコンポーネントとしても使用できます)
 CheckboxGroup

複数のチェックボックスコンポーネントを1つのグループに結合するために使用され、チェックボックスコンポーネントのグループの1つのみを選択できます。

つまり、すべてがラジオボタンコンポーネントになります

 選択 ドロップダウン選択ボックス
 フレーム GUIプログラムでウィンドウを作成するために使用されるウィンドウ
 ラベル 有益なテキストを配置するためのラベルクラス
  リスト リストボックス、複数のアイテムを追加できます
 パネル 基本コンテナクラスは単独で存在することはできず、他のコンテナに配置する必要があります

  スライダーコンポーネント。ユーザーが値の範囲を入力する必要がある場合は、パレットなどでスライダーコンポーネントを使用できます

RGBの3つの値を設定するために使用されるスライダー。スライダーを作成するときは、その方向、初期値、スライダーサイズ、

最小値と最大値。

スクロール・バー
 ScrollPane 水平および垂直スクロールバーを備えたコンテナコンポーネント
 TexlArea 複数行のテキストフィールド
 テキストフィールド

1行のテキストボックス 

スイングの概要

Swingは100%純粋なJavaで実装され、ネイティブプラットフォームのGUIに依存しなくなったため、すべてのプラットフォームで同じインターフェイスの外観を維持できます。ネイティブプラットフォームに依存しないSwingコンポーネントは軽量コンポーネントと呼ばれ、ネイティブプラットフォームに依存するAWTコンポーネントはヘビーウェイトコンポーネントと呼ばれます。

Swingのすべてのコンポーネントは完全にJavaで実装されており、ローカルプラットフォームのGUIを呼び出さなくなったため、Swingグラフィカルインターフェイスの表示速度はAWTグラフィカルインターフェイスの表示速度よりも遅くなります。


,但相对于快速发展的硬件设施而言,这种微小的速度差别无妨大碍。

スイングの利点:

  • SwingコンポーネントはローカルプラットフォームのGUIに依存しなくなり、さまざまなプラットフォームのGUIの共通部分を使用する必要がなくなるため、Swingは、AWTが提供するグラフィカルインターフェイスコンポーネントセットをはるかに超える多数のグラフィカルインターフェイスコンポーネントを提供します。
  • SwingコンポーネントはネイティブプラットフォームのGUIに依存しなくなったため、プラットフォームに依存するバグは発生しません。
  • Swingコンポーネントは、さまざまなプラットフォームで実行するときに同じグラフィカルインターフェイスの外観を持つことが保証されます。Swingによって提供されるこれらの利点により、Javaで変更されたインターフェイスプログラムは、「WriteOnce、RunAnywhere」の目標を真に達成します。

ほとんどのSwingコンポーネントは、JComponent抽象クラスの直接または間接のサブクラスです(すべてのSwingコンポーネントではありません)。Componentクラスは、すべてのサブクラスコンポーネントに共通のメソッドを定義します。Componentクラスは、AWTのjavaawtContainerクラスのサブクラスであり、AWTの1つでもあります。 Swingとのリンク。ほとんどのSwingコンポーネントクラスはContainerクラスを継承するため、すべてのSwingコンポーネントをコンテナとして使用できます(JFrameはFrameクラスを継承します)。

SwingコンポーネントとAWTコンポーネント間の対応:

ほとんどの場合、対応するSwingコンポーネント名を取得するには、AWTコンポーネントの名前の前にJを追加するだけで済みますが、いくつかの例外があります
。1. ComboBoxはAWTのChoiceコンポーネントに対応しますが、さらに多くの機能があります。 Choiceコンポーネントよりも機能します
。Rich2.JFileChwoser:AWTAのFileDialogコンポーネントに対応します。
3.ScrollBar:Ding AWTのScrollbarコンポーネントに対応して、2つのコンポーネントのクラス名の文字bの場合の違いに注意してください。
4.CheckBoxはAWTのCheckboxコンポーネントに対応し、2つのコンポーネントのクラス名のb文字の大文字の違いに注意して
ください。5.CheckBoxMenultem:AWTのCheckboxMenultemコンポーネントに対応し、の大文字の違いに注意してください。 b2つのコンポーネントクラス名の文字。

おすすめ

転載: blog.csdn.net/weixin_60719453/article/details/122584909