what is java awt
このJavaAWTチュートリアルでは、JavaのAbstract Window Toolkitとは何か、およびAWT Color、Point、Graphics、AWT vsSwingなどの関連概念について説明します。
以前のチュートリアルの1つで、基本的なGUI用語を紹介しました。このチュートリアルでは、「AWTフレームワーク」と呼ばれるJavaで最も古いGUIフレームワークの1つについて説明します。 AWTは、「AbstractWindowToolkit」の短縮形です。
AWTは、JavaでGUIアプリケーションを作成するためのAPIです。これはプラットフォームに依存するフレームワークです。つまり、AWTに属するGUIコンポーネントはすべてのプラットフォームで同じではありません。プラットフォームのネイティブのルックアンドフィールに従って、AWTコンポーネントのルックアンドフィールも変更されます。
=> ここですべてのJavaチュートリアルを確認してください。
学習内容:
JAVA AWT(Abstract Window Toolkit)
Java AWTは、ネイティブプラットフォームのサブルーチンを呼び出すことによってコンポーネントを作成します。したがって、AWT GUIアプリケーションは、Windowsで実行しているときはWindows OSのルックアンドフィールを持ち、Macで実行しているときはMacOSのルックアンドフィールを持ちます。これは、Abstract WindowToolkitアプリケーションのプラットフォーム依存性を説明しています。
プラットフォームに依存し、コンポーネントが重量級であるため、最近ではJavaアプリケーションで使用されることはめったにありません。さらに、軽量でプラットフォームに依存しないSwingのような新しいフレームワークもあります。
Swingは、AWTと比較すると、より柔軟で強力なコンポーネントを備えています。 Swingは、Abstract Window Toolkitに似たコンポーネントを提供し、ツリー、タブ付きパネルなどのより高度なコンポーネントも備えています。
ただし、ここで注意すべきことの1つは、 JavaSwingフレームワーク AWTに基づいています。言い換えると、Swingは拡張APIであり、Abstract WindowToolkitフレームワークを拡張します。したがって、Swingチュートリアルに入る前に、このフレームワークの概要を見てみましょう。
AWTの階層とコンポーネント
それでは、JavaのAbstract WindowToolkit階層がどのように見えるかを見てみましょう。
以下に示すのは、JavaのAWT階層の図です。
上の図に示すように、ルートAWTコンポーネント「Component」は「Object」クラスから拡張されています。コンポーネントクラスは、Label、Button、List、Checkbox、Choice、Containerなどの他のコンポーネントの親です。
コンテナはさらにパネルとウィンドウに分かれています。アプレットクラスはPanelから派生し、FrameとDialogはWindowコンポーネントから派生します。
次に、これらのコンポーネントについて簡単に説明します。
コンポーネントクラス
Componentクラスは、階層のルートです。コンポーネントは抽象クラスであり、現在の背景色と前景色、および現在のテキストフォントを担当します。
コンポーネントクラスは、ビジュアルコンポーネントのプロパティと属性をカプセル化します。
コンテナ
コンテナAWTコンポーネントには、テキスト、ラベル、ボタン、テーブル、リストなどの他のコンポーネントを含めることができます。コンテナは、GUIに追加された他のコンポーネントのタブを保持します。
パネル
パネルはContainerクラスのサブクラスです。パネルは具体的なクラスであり、タイトル、境界線、またはメニューバーは含まれていません。他の部品を収納する容器です。 1つのフレームに複数のパネルを含めることができます。
ウィンドウクラス
Windowsクラスはトップレベルのウィンドウであり、フレームまたはダイアログを使用してウィンドウを作成できます。ウィンドウには境界線やメニューバーはありません。
フレーム
フレームはWindowクラスから派生し、サイズを変更できます。フレームには、ボタン、ラベル、フィールド、タイトルバーなどのさまざまなコンポーネントを含めることができます。フレームは、ほとんどのAbstract WindowToolkitアプリケーションで使用されます。
手動テストでテストケースを作成する方法
フレームは2つの方法で作成できます。
#1)Frameクラスオブジェクトを使用する
ここでは、Frameクラスをインスタンス化してFrameクラスオブジェクトを作成します。
プログラミング例を以下に示します。
import java.awt.*; class FrameButton{ FrameButton (){ Frame f=new Frame(); Button b=new Button('CLICK_ME'); b.setBounds(30,50,80,30); f.add(b); f.setSize(300,300); f.setLayout(null); f.setVisible(true); } public static void main(String args()){ FrameButton f=new FrameButton (); } }
出力:
#2)フレームクラスを拡張する
ここでは、Frameクラスを拡張するクラスを作成してから、コンストラクターでフレームのコンポーネントを作成します。
これは、以下のプログラムに示されています。
import java.awt.*; class AWTButton extends Frame{ AWTButton (){ Button b=new Button('AWTButton'); b.setBounds(30,100,80,30);// setting button position add(b);//adding button into frame setSize(300,300);//frame size 300 width and 300 height setLayout(null);//no layout manager setVisible(true);//now frame will be visible, by default not visible } public static void main(String args()){ AWTButton f=new AWTButton (); } }
出力:
AWTカラークラス
上に示したAWT出力には、背景と前景のデフォルトの色がありました。 Abstract Window Toolkitは、コンポーネントの色を作成および設定するために使用されるColorクラスを提供します。コンポーネントプロパティを介してフレームワークを使用して、コンポーネントに色を設定することもできます。
Colorクラスを使用すると、プログラムで同じことができます。この目的のために、ColorクラスはRGBAカラーモデル(RGBA = RED、GREEN、BLUE、ALPHA)またはHSB(HSB = HUE、SATURATION、BRIComponents)モデルを使用します。
このチュートリアルの範囲を超えているため、このクラスの詳細については説明しません。
次の表に、Colorクラスによって提供されるさまざまなメソッドを示します。
コンストラクター/メソッド | 説明 |
---|---|
getBlue() | 0〜255の範囲の青色成分を返します。 |
brighter() | 現在の色の明るいバージョンを作成します。 |
createContext(ColorModel cm、Rectangle r、Rectangle2D r2d、AffineTransform x、RenderingHints h) | 新しいPaintContextを返します。 |
darker() | 現在の色の暗いバージョンを作成します。 |
デコード(文字列nm) | 文字列を整数に変換して、指定した不透明色を返します。 |
equals(Object obj) | 指定されたカラーオブジェクトが現在のオブジェクトと等しいかどうかを確認します。 |
getAlpha() | 0〜255の範囲の色のアルファ値を返します。 |
getColor(String nm) | システムプロパティから色を返します。 |
getColor(String nm、Color v) | |
getColor(String nm、int v) | |
getColorComponents(ColorSpace cspace、float () compArray) | 指定されたColorSpaceからの色成分を含むfloat型の配列を返します。 |
getColorComponents(float () compArray) | ColorのColorSpaceからの色成分を含むfloat型の配列を返します。 |
getColorSpace() | 現在の色のColorSpaceを返します。 |
getGreen() | デフォルトのsRGBスペースで0〜255の範囲の緑色のコンポーネントを返します。 |
getRed() | デフォルトのsRGBスペースで0〜255の範囲の赤色成分を返します。 |
getRGB() | デフォルトのsRGBColorModelで現在の色のRGB値を返します。 |
getHSBColor(float h、float s、float b) | 指定された値を持つHSBカラーモデルを使用してColorオブジェクトを作成します。 |
getTransparency() | この色の透明度の値を返します。 |
ハッシュコード() | この色のハッシュコードを返します。 |
HSBtoRGB(float h、float s、float b) | 指定されたHSBをRGB値に変換します |
RGBtoHSB(int r、int g、int b、float () hsbvals) | 指定されたRGB値をHSB値に変換します。 |
JavaのAWTポイント
Pointクラスは、場所を示すために使用されます。場所は2次元座標系からのものです。
メソッド | 説明 |
---|---|
toString() | ポイントの文字列表現を返します。 |
equals(Object) | 2点が等しいかどうかを確認します。 |
getLocation() | 現在のポイントの場所を返します。 |
ハッシュコード() | 現在のポイントのハッシュコードを返します。 |
move(int、int) | 指定されたポイントを(x、y)座標系の指定された位置に移動します。 |
setLocation(int、int) | ポイントの場所を指定した場所に変更します。 |
setLocation(Point) | ポイントの場所を指定された場所に設定します。 |
translate(int、int) | 現在のポイントをx + dx、y + dyのポイントに変換します。 |
AWTグラフィッククラス
アプリケーションでコンポーネントを描画するためのAbstractWindow Toolkitのすべてのグラフィックスコンテキストは、Graphicsクラスから派生します。 Graphicsクラスオブジェクトには、操作のレンダリングに必要な状態情報が含まれています。
通常、状態情報には次のものが含まれます。
- どのコンポーネントを描画しますか?
- レンダリングとクリッピングの座標。
- 現在の色、フォント、およびクリップ。
- 論理ピクセルに対する現在の操作。
- 現在のXORカラー
Graphicsクラスの一般的な宣言は次のとおりです。
public abstract class Graphics extends Object
AWTヘッドレスモードとヘッドレス例外
グラフィックベースのアプリケーションで作業する必要があるが、実際のキーボード、マウス、さらにはディスプレイがないという要件がある場合、それは「ヘッドレス」環境と呼ばれます。
JVMは、このようなヘッドレス環境を認識している必要があります。 Abstract WindowToolkitを使用してヘッドレス環境を設定することもできます。
以下に示すように、これを行う特定の方法があります。
#1) プログラミングコードを使用して、システムプロパティ「java.awt.headless」をtrueに設定します。
#二) コマンドラインを使用して、次のヘッドレスモードプロパティをtrueに設定します。
java -Djava.awt.headless = true
#3) サーバー起動スクリプトを使用して、「JAVA_OPTS」という名前の環境変数に「-Djava.awt.headless = true」を追加します。
環境がヘッドレスで、ディスプレイ、キーボード、またはマウスに依存するコードがあり、このコードがヘッドレス環境で実行されると、例外「HeadlessException」が発生します。
HeadlessExceptionの一般的な宣言を以下に示します。
public class HeadlessException extends UnsupportedOperationException
たとえば、画像ベースの画像ログインを必要とするアプリケーションでは、ヘッドレスモードを使用します。 例えば、 ログインするたびに、またはページが更新されるたびに画像を変更したい場合は、そのような場合に画像をロードし、キーボードやマウスなどを必要としません。
JavaAWTとSwing
ここで、JavaAWTとSwingの違いをいくつか見てみましょう。
AWT | スイング |
---|---|
AWTは、各コンポーネントに対応するオペレーティングシステムの21のピアまたはウィジェットと連携します。 | Swingは、ウィンドウオブジェクトである1つのピアでのみ機能します。他のすべてのコンポーネントは、Windowオブジェクト内でSwingによって描画されます。 |
AWTは「AbstractWindowsToolkit」の略です。 | Swingは、Java Foundation Classes(JFC)から派生しています。 |
AWTはオペレーティングシステムのサブルーチンに直接サブルーチン呼び出しを行うため、AWTコンポーネントは重量があります。 | スイングコンポーネントはAWTの上に書かれているため、コンポーネントは軽量です。 |
AWTコンポーネントはjava.awtパッケージの一部です。 | Swingコンポーネントはjavax.swingパッケージの一部です。 |
AWTはプラットフォームに依存します。 | SwingコンポーネントはJavaで記述されており、プラットフォームに依存しません。 |
AWTにはルックアンドフィールがありません。それは、それが実行されるプラットフォームのルックアンドフィールを適応させます。 | Swingは、独自の異なるルックアンドフィールを提供します。 |
AWTには基本機能のみがあり、テーブル、タブ付きパネルなどの高度な機能はサポートしていません。 | Swingは、JTabbedパネル、JTableなどの高度な機能を提供します。 |
AWTは、オペレーティングシステムの上にあるクラスの薄層と同じくらい優れているため、プラットフォームに依存します。 | スイングは大きく、豊富な機能も備えています。 |
AWTは私たちにたくさんのことを書かせます。 | Swingにはほとんどの機能が組み込まれています。 |
よくある質問
Q#1)JavaのAWTとは何ですか?
回答: Swingフレームワークに先行するプラットフォーム依存のグラフィカルユーザーインターフェイスフレームワークである「AbstractWindowToolkit」としても知られるJavaのAWT。これは、Java標準GUI API、Java Foundation Classes、またはJFCの一部です。
Q#2)Java AWTはまだ使用されていますか?
回答: まだ使用されているいくつかのコンポーネントを除いて、Javaではほとんど廃止されています。また、AWTを使用する古いプラットフォームで実行されている古いアプリケーションやプログラムがまだいくつかあります。
Q#3)JavaのAWTとSwingとは何ですか?
回答: Abstract Windowツールキットは、JavaでGUIアプリケーションを開発するためのプラットフォーム依存のAPIです。一方、SwingはGUI開発用のAPIであり、Java Foundation Classes(JFC)から派生しています。 AWTコンポーネントは重量があり、Swingコンポーネントは軽量です。
Q#4)Java AWTのフレームは何ですか?
文字列の配列を作成するjava
回答: フレームは、タイトルと境界線を持つ最上位のコンポーネントウィンドウとして定義できます。フレームには、デフォルトのレイアウトとして「境界線レイアウト」があります。フレームは、Close、Opened、Closing、Activate、DeactivateなどのWindowsイベントも生成します。
Q#5)インポートJava AWTとは何ですか?
回答: Import Java AWT(import java.awt。*)は、TextFields、Buttons、Labels、Listなどのコンポーネントを使用できるように、プログラムにAWTAPIの機能が必要であることを示しています。
結論
このチュートリアルでは、JavaでのGUI開発用のプラットフォーム依存APIとして、Abstract WindowToolkitの概要について説明しました。これはJavaではほとんど廃止されており、SwingsやJavaFXなどの他のAPIに置き換えられています。
現在ほとんど使用されていないため、Abstract WindowToolkitのすべてのコンポーネントの詳細については説明していません。したがって、フレーム、カラーなどのコンポーネントと、AWTを使用して設定されるヘッドレスモードについてのみ説明しました。
次のチュートリアルでは、Java Swingチュートリアルから始め、今日のほとんどのJavaアプリケーションがGUI開発にSwingを使用しているため、それらについて詳しく説明します。
=> ここで簡単なJavaトレーニングシリーズに注意してください。