Swing-quick-guide
スイング-概要
Swing APIは、Javaベースのフロントエンド/GUIアプリケーションを作成する開発者の生活を楽にする拡張可能なGUIコンポーネントのセットです。 AWT APIに基づいて構築され、AWTコントロールに対応するほぼすべてのコントロールを備えているため、AWT APIの代替として機能します。 Swingコンポーネントは、Model-View-Controllerアーキテクチャに従って、次の基準を満たしています。
- 複数のLook&Feelをサポートするには、単一のAPIで十分です。
- APIはモデル駆動型であるため、データを保持するために最高レベルのAPIは必要ありません。
- APIは、BuilderツールとIDEが開発者により良いサービスを提供できるように、Java Beanモデルを使用することです。
MVCのアーキテクチャ
Swing APIアーキテクチャは、次の方法で緩やかに基づくMVCアーキテクチャに従います。
- モデルはコンポーネントのデータを表します。
- ビューは、コンポーネントのデータの視覚的表現を表します。
- コントローラーは、ビュー上のユーザーからの入力を受け取り、コンポーネントのデータの変更を反映します。
- Swingコンポーネントには個別の要素としてModelがありますが、ViewとControllerの部分はUser Interface要素に含まれています。 そのため、Swingにはプラグイン可能なルックアンドフィールアーキテクチャがあります。
スイング機能
- 軽量-Swing APIコントロールは、基本となるオペレーティングシステムコールではなく、純粋なJAVAコードを使用してレンダリングされるため、SwingコンポーネントはネイティブオペレーティングシステムのAPIから独立しています。
- リッチコントロール-Swingは、ツリー、TabbedPane、スライダー、カラーピッカー、テーブルコントロールなどの高度なコントロールの豊富なセットを提供します。
- 高度にカスタマイズ可能-視覚的な外観は内部表現に依存しないため、Swingコントロールは非常に簡単な方法でカスタマイズできます。
- プラグイン可能なルックアンドフィール-SWINGベースのGUIアプリケーションのルックアンドフィールは、使用可能な値に基づいて実行時に変更できます。
SWING-環境設定
このセクションでは、マシンにJavaをダウンロードしてセットアップする方法について説明します。 環境をセットアップするには、次の手順を使用してください。
Java SEは、https://java.sun.com/javase/downloads/index_jdk5.jsp [Javaのダウンロード]リンクから無料で入手できます。 したがって、オペレーティングシステムに基づいてバージョンをダウンロードできます。
指示に従ってJavaをダウンロードし、*。exe *を実行して、マシンにJavaをインストールします。 マシンにJavaをインストールしたら、正しいインストールディレクトリを指すように環境変数を設定する必要があります。
Windows 2000/XPのパスのセットアップ
Javaを c:\ Program Files \ java \ jdk ディレクトリにインストールしたと仮定します-
- ステップ1 *-[マイコンピュータ]を右クリックして、[プロパティ]を選択します。
- ステップ2 *-[詳細設定]タブの下の[環境変数]ボタンをクリックします。
ステップ3 *-'Path’変数を変更して、Java実行可能ファイルへのパスも含まれるようにします。 たとえば、パスが現在 *'C:\ WINDOWS \ SYSTEM32' に設定されている場合、パスを 'C:\ WINDOWS \ SYSTEM32; c:\ Program Files \ java \ jdk \ bin' に変更します。
Windows 95/98/MEのパスのセットアップ
Javaを c:\ Program Files \ java \ jdk ディレクトリにインストールしたと仮定します-
ステップ1 *- *'C:\ autoexec.bat' ファイルを編集し、最後に次の行を追加します: 'SET PATH =%PATH%; C:\ Program Files \ java \ jdk \ bin' 。
Linux、UNIX、Solaris、FreeBSDのパスのセットアップ
環境変数PATHは、Javaバイナリがインストールされている場所を指すように設定する必要があります。 これを実行できない場合は、シェルのドキュメントを参照してください。
たとえば、シェルとして bash を使用する場合、次の行を最後の '。bashrcに追加します:export PATH =/path/to/java:$ PATH' 。
人気のあるJavaエディター
Javaプログラムを作成するには、テキストエディターが必要です。 市場にはさらに洗練されたIDEがあります。 しかし、今のところ、次のいずれかを検討することができます-
- メモ帳-Windowsマシンでは、メモ帳(このチュートリアルに推奨)、TextPadなどの単純なテキストエディタを使用できます。
- Netbeans -Netbeansは、オープンソースで無料のJava IDEであり、https://netbeans.org/indexl [https://www.netbeans.org/indexl]からダウンロードできます。
- Eclipse -Eclipseは、Eclipseオープンソースコミュニティによって開発されたJava IDEでもあり、https://www.eclipse.org/からダウンロードできます。
スイング-コントロール
すべてのユーザーインターフェイスは、次の3つの主要な側面を考慮します-
- * UI要素*-これらは、ユーザーが最終的に表示および操作するコアの視覚要素です。 GWTは、基本から複雑なものまでさまざまな、広く使用されている一般的な要素の膨大なリストを提供します。これについては、このチュートリアルで取り上げます。
- レイアウト-UI要素を画面上で整理する方法を定義し、GUI(グラフィカルユーザーインターフェイス)に最終的なルックアンドフィールを提供します。 この部分については、レイアウトの章で説明します。
- 動作-これらは、ユーザーがUI要素と対話するときに発生するイベントです。 この部分については、イベント処理の章で説明します。
すべてのSWINGコントロールは、次のコンポーネントクラス階層からプロパティを継承します。
S.No. | Class & Description |
---|---|
1 |
コンポーネントは、SWINGの非メニューユーザーインターフェイスコントロールの抽象基本クラスです。 コンポーネントはグラフィカルな表現でオブジェクトを表します |
2 |
コンテナは、他のSWINGコンポーネントを含むことができるコンポーネントです |
3 |
JComponentは、すべてのSWING UIコンポーネントの基本クラスです。 JComponentから継承するSWINGコンポーネントを使用するには、コンポーネントが、最上位のSWINGコンテナをルートとする包含階層に存在する必要があります |
スイングUI要素
以下は、SWINGを使用してGUIを設計するときに一般的に使用されるコントロールのリストです。
S.No. | Class & Description |
---|---|
1 |
JLabelオブジェクトは、テキストをコンテナに配置するためのコンポーネントです。 |
2 |
このクラスはラベル付きボタンを作成します。 |
3 |
JColorChooserは、ユーザーが色を操作および選択できるように設計されたコントロールのペインを提供します。 |
4 |
JCheckBoxは、 on (true)または off (false)状態のいずれかになるグラフィカルコンポーネントです。 |
5 |
JRadioButtonクラスは、 on (true)または off (false)状態のいずれかになるグラフィカルコンポーネントです。 グループで。 |
6 |
JListコンポーネントは、テキストアイテムのスクロールリストをユーザーに提示します。 |
7 |
JComboBoxコンポーネントは、ユーザーに選択肢のメニューを表示します。 |
8 |
JTextFieldオブジェクトは、1行のテキストの編集を可能にするテキストコンポーネントです。 |
9 |
JPasswordFieldオブジェクトは、パスワード入力に特化したテキストコンポーネントです。 |
10 |
JTextAreaオブジェクトは、複数行のテキストの編集を可能にするテキストコンポーネントです。 |
11 |
ImageIconコントロールは、画像からアイコンを描画するIconインターフェースの実装です |
12 |
Scrollbarコントロールは、ユーザーが値の範囲から選択できるようにするためのスクロールバーコンポーネントを表します。 |
13 |
JOptionPaneは、ユーザーに値の入力を求めるか、何かを知らせる標準のダイアログボックスのセットを提供します。 |
14 |
JFileChooserコントロールは、ユーザーがファイルを選択できるダイアログウィンドウを表します。 |
15 |
タスクが完了に向かって進行すると、進行状況バーにタスクの完了率が表示されます。 |
16 |
JSliderを使用すると、ユーザーは制限された間隔内でノブをスライドさせることにより、グラフィカルに値を選択できます。 |
17 |
JSpinnerは、ユーザーが順序付けられたシーケンスから数値またはオブジェクト値を選択できる単一行の入力フィールドです。 |
SWING-イベント処理
この章では、イベント、そのタイプ、およびイベントの処理方法について学習します。 理解を深めるために、章の最後に例を示します。
イベントとは何ですか?
オブジェクトの状態の変化は*イベント*として知られています。つまり、イベントはソースの状態の変化を表します。 イベントは、グラフィカルユーザーインターフェイスコンポーネントとのユーザーインタラクションの結果として生成されます。 たとえば、ボタンをクリックする、マウスを動かす、キーボードから文字を入力する、リストから項目を選択する、ページをスクロールするなどのイベントが発生します。
イベントの種類
イベントは大きく2つのカテゴリに分類することができます-
- 前景イベント-これらのイベントは、ユーザーの直接の対話を必要とします。 それらは、グラフィカルユーザーインターフェイスのグラフィカルコンポーネントと対話する人の結果として生成されます。 たとえば、ボタンをクリックする、マウスを動かす、キーボードから文字を入力する、リストから項目を選択する、ページをスクロールするなど
- バックグラウンドイベント-これらのイベントはエンドユーザーの相互作用を必要とします。 バックグラウンドイベントの例としては、オペレーティングシステムの割り込み、ハードウェアまたはソフトウェアの障害、タイマーの期限切れ、操作の完了などがあります。
イベント処理とは何ですか?
イベント処理は、イベントを制御し、イベントが発生した場合の動作を決定するメカニズムです。 このメカニズムには、イベントハンドラーと呼ばれるコードがあり、イベントが発生すると実行されます。
Javaは、委任イベントモデルを使用してイベントを処理します。 このモデルは、イベントを生成および処理する標準メカニズムを定義します。
委任イベントモデルには、次の主要な参加者がいます。
- ソース-ソースは、イベントが発生するオブジェクトです。 ソースは、発生したイベントの情報をハンドラーに提供する責任があります。 Javaはソースオブジェクトのクラスを提供します。
- リスナー-イベントハンドラーとも呼ばれます。 リスナーは、イベントへの応答を生成します。 Java実装の観点から見ると、リスナーはオブジェクトでもあります。 リスナーは、イベントを受信するまで待機します。 イベントを受信すると、リスナーはイベントを処理してから戻ります。
このアプローチの利点は、ユーザーインターフェイスロジックがイベントを生成するロジックから完全に分離されることです。 ユーザーインターフェイス要素は、イベントの処理を別のコードに委任できます。
このモデルでは、リスナーがイベント通知を受信できるように、リスナーをソースオブジェクトに登録する必要があります。 これは、イベント通知を受信したいリスナーにのみ送信されるため、イベントを処理する効率的な方法です。
イベント処理に含まれるステップ
- ステップ1 *-ユーザーがボタンをクリックすると、イベントが生成されます。
- ステップ2 *-関係するイベントクラスのオブジェクトが自動的に作成され、ソースとイベントに関する情報が同じオブジェクト内に入力されます。
- ステップ3 *-イベントオブジェクトは、登録されたリスナークラスのメソッドに転送されます。
- ステップ4 *-メソッドが実行されて戻ります。
リスナーについて覚えておくべきポイント
- リスナークラスを設計するには、いくつかのリスナーインターフェイスを開発する必要があります。 これらのListenerインターフェイスは、いくつかのパブリック抽象コールバックメソッドを予測します。これらのメソッドは、リスナークラスによって実装する必要があります。
- 定義済みのインターフェイスを実装しない場合、クラスはソースオブジェクトのリスナークラスとして機能できません。
コールバックメソッド
これらは、APIプロバイダーによって提供され、アプリケーションプログラマーによって定義され、アプリケーション開発者によって呼び出されるメソッドです。 ここで、コールバックメソッドはイベントメソッドを表します。 イベントへの応答で、java jreはコールバックメソッドを起動します。 このようなコールバックメソッドはすべて、リスナーインターフェイスで提供されます。
コンポーネントが何らかのリスナーにイベントをリッスンさせたい場合、ソースはそれ自体をリスナーに登録する必要があります。
イベント処理の例
たとえば、 D:/> SWING> com> finddevguides> gui> の任意のエディターを使用して、次のJavaプログラムを作成します。
SwingControlDemo.java
package com.finddevguides.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingControlDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public SwingControlDemo(){
prepareGUI();
}
public static void main(String[] args){
SwingControlDemo swingControlDemo = new SwingControlDemo();
swingControlDemo.showEventDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java SWING Examples");
mainFrame.setSize(400,400);
mainFrame.setLayout(new GridLayout(3, 1));
headerLabel = new JLabel("",JLabel.CENTER );
statusLabel = new JLabel("",JLabel.CENTER);
statusLabel.setSize(350,100);
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private void showEventDemo(){
headerLabel.setText("Control in action: Button");
JButton okButton = new JButton("OK");
JButton submitButton = new JButton("Submit");
JButton cancelButton = new JButton("Cancel");
okButton.setActionCommand("OK");
submitButton.setActionCommand("Submit");
cancelButton.setActionCommand("Cancel");
okButton.addActionListener(new ButtonClickListener());
submitButton.addActionListener(new ButtonClickListener());
cancelButton.addActionListener(new ButtonClickListener());
controlPanel.add(okButton);
controlPanel.add(submitButton);
controlPanel.add(cancelButton);
mainFrame.setVisible(true);
}
private class ButtonClickListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if( command.equals( "OK" )) {
statusLabel.setText("Ok Button clicked.");
} else if( command.equals( "Submit" ) ) {
statusLabel.setText("Submit Button clicked.");
} else {
statusLabel.setText("Cancel Button clicked.");
}
}
}
}
コマンドプロンプトを使用してプログラムをコンパイルします。 D:/> SWING に移動して、次のコマンドを入力します。
D:\AWT>javac com\finddevguides\gui\SwingControlDemo.java
エラーが発生しない場合、コンパイルが成功したことを意味します。 次のコマンドを使用してプログラムを実行します。
D:\AWT>java com.finddevguides.gui.SwingControlDemo
次の出力を確認します。
SWING-イベントクラス
イベントクラスはイベントを表します。 Javaはさまざまなイベントクラスを提供しますが、より頻繁に使用されるもののみを説明します。
EventObjectクラス
すべてのイベント状態オブジェクトの派生元となるルートクラスです。 すべてのイベントは、問題のイベントが最初に発生したオブジェクトであると論理的に見なされるオブジェクト、つまり source への参照で構築されます。 このクラスは java.util パッケージで定義されています。
クラス宣言
以下は java.util.EventObject クラスの宣言です-
public class EventObject
extends Object
implements Serializable
フィールド
以下は、 java.util.EventObject クラスのフィールドです-
保護されたオブジェクトソース-イベントが最初に発生したオブジェクト。
クラスコンストラクター
Sr.No. | Constructor & Description |
---|---|
1 |
EventObject(Object source) プロトタイプイベントを構築します。 |
クラスメソッド
Sr.No. | Method & Description |
---|---|
1 |
Object getSource() イベントが最初に発生したオブジェクト。 |
2 |
String toString() このEventObjectの文字列表現を返します。 |
継承されるメソッド
このクラスは、次のクラスからメソッドを継承します-
- java.lang.Object
SWINGイベントクラス
一般的に使用されるイベントクラスのリストを次に示します。
Sr.No. | Class & Description |
---|---|
1 |
これは、すべてのSWINGイベントのルートイベントクラスです。 このクラスとそのサブクラスは、元の java.awt.Event クラスに優先します。 |
2 |
ActionEventは、ボタンがクリックされるか、リストのアイテムがダブルクリックされると生成されます。 |
3 |
InputEventクラスは、すべてのコンポーネントレベルの入力イベントのルートイベントクラスです。 |
4 |
文字を入力すると、キーイベントが生成されます。 |
5 |
このイベントは、コンポーネントでマウスアクションが発生したことを示します。 |
6 |
このクラスのオブジェクトは、ウィンドウの状態の変化を表します。 |
7 |
このクラスのオブジェクトは、Adjustableオブジェクトによって発行される調整イベントを表します。 |
8 |
このクラスのオブジェクトは、ウィンドウの状態の変化を表します。 |
9 |
このクラスのオブジェクトは、ウィンドウの状態の変化を表します。 |
10 |
このクラスのオブジェクトは、ウィンドウの状態の変化を表します。 |
11 |
このクラスのオブジェクトは、ウィンドウの状態の変化を表します。 |
SWING-イベントリスナー
イベントリスナーは、イベントを処理するインターフェイスを表します。 Javaはさまざまなイベントリスナクラスを提供しますが、より頻繁に使用されるもののみを説明します。 イベントリスナーメソッドのすべてのメソッドには、EventObjectクラスのサブクラスであるオブジェクトとして単一の引数があります。 たとえば、マウスイベントリスナーメソッドは、MouseEventのインスタンスを受け取ります。MouseEventは、EventObjectから派生します。
EventListnerインターフェイス
これは、すべてのリスナーインターフェイスが拡張する必要があるマーカーインターフェイスです。 このクラスは java.util パッケージで定義されています。
クラス宣言
以下は java.util.EventListener インターフェイスの宣言です-
public interface EventListener
SWINGイベントリスナーインターフェイス
以下は、一般的に使用されるイベントリスナーのリストです。
Sr.No. | Class & Description |
---|---|
1 |
このインターフェイスは、アクションイベントを受信するために使用されます。 |
2 |
このインターフェイスは、コンポーネントイベントを受信するために使用されます。 |
3 |
このインターフェイスは、アイテムイベントを受信するために使用されます。 |
4 |
このインターフェイスは、キーイベントの受信に使用されます。 |
5 |
このインターフェイスは、マウスイベントを受信するために使用されます。 |
6 |
このインターフェイスは、ウィンドウイベントを受信するために使用されます。 |
7 |
このインターフェイスは、調整イベントを受信するために使用されます。 |
8 |
このインターフェイスは、コンテナイベントを受信するために使用されます。 |
9 |
このインターフェイスは、マウスモーションイベントを受信するために使用されます。 |
10 |
このインターフェイスは、フォーカスイベントを受信するために使用されます。 |
SWING-イベントアダプター
アダプターは、さまざまなイベントを受け取るための抽象クラスです。 これらのクラスのメソッドは空です。 これらのクラスは、リスナーオブジェクトを作成するための便利なものとして存在します。
SWINGアダプター
以下は、SWINGでGUIイベントをリッスンしているときに一般的に使用されるアダプターのリストです。
Sr.No. | Adapter & Description |
---|---|
1 |
フォーカスイベントを受信するための抽象アダプタークラス。 |
2 |
キーイベントを受信するための抽象アダプタークラス。 |
3 |
マウスイベントを受信するための抽象アダプタークラス。 |
4 |
マウスモーションイベントを受信するための抽象アダプタークラス。 |
5 |
ウィンドウイベントを受信するための抽象アダプタークラス。 |
SWING-レイアウト
レイアウトとは、コンテナ内のコンポーネントの配置を指します。 別の言い方をすれば、レイアウトはコンポーネントをコンテナ内の特定の位置に配置していると言えます。 コントロールをレイアウトするタスクは、レイアウトマネージャーによって自動的に実行されます。
レイアウトマネージャー
レイアウトマネージャーは、コンテナ内のすべてのコンポーネントを自動的に配置します。 レイアウトマネージャーを使用しない場合でも、コンポーネントはデフォルトのレイアウトマネージャーによって配置されます。 手動でコントロールをレイアウトすることは可能ですが、次の2つの理由により非常に困難になります。
- コンテナ内で多数のコントロールを処理するのは非常に面倒です。
- 通常、コンポーネントを配置する必要がある場合、コンポーネントの幅と高さの情報は提供されません。
Javaには、コントロールを配置するためのさまざまなレイアウトマネージャーが用意されています。 サイズ、形状、配置などのプロパティは、レイアウトマネージャーによって異なります。 アプレットまたはアプリケーションウィンドウのサイズが変更されると、それに応じてコンポーネントのサイズ、形状、および配置も変更されます。 レイアウトマネージャは、アプレットビューアまたはアプリケーションウィンドウのサイズに適応します。
レイアウトマネージャーは、すべてのコンテナオブジェクトに関連付けられています。 各レイアウトマネージャーは、LayoutManagerインターフェイスを実装するクラスのオブジェクトです。
以下は、レイアウトマネージャーの機能を定義するインターフェイスです。
Sr.No. | Interface & Description |
---|---|
1 |
LayoutManagerインターフェイスは、クラスが実装する必要のあるメソッドを宣言します。このオブジェクトはレイアウトマネージャーとして機能します。 |
2 |
LayoutManager2は、LayoutManagerのサブインターフェースです。 このインターフェイスは、レイアウト制約オブジェクトに基づいてコンテナをレイアウトする方法を知っているクラス用です。 |
AWT Layout Managerクラス
以下は、AWTを使用してGUIを設計するときに一般的に使用されるコントロールのリストです。
Sr.No. | LayoutManager & Description |
---|---|
1 |
borderlayoutは、東、西、北、南、中央の5つの領域に収まるようにコンポーネントを配置します。 |
2 |
CardLayoutオブジェクトは、コンテナ内の各コンポーネントをカードとして扱います。 一度に表示されるカードは1つだけです。 |
3 |
FlowLayoutはデフォルトのレイアウトです。 コンポーネントを方向性フローでレイアウトします。 |
4 |
GridLayoutは、長方形グリッドの形でコンポーネントを管理します。 |
5 |
これは最も柔軟なレイアウトマネージャークラスです。 GridBagLayoutのオブジェクトは、同じサイズのコンポーネントを必要とせずに、コンポーネントを垂直、水平、またはベースラインに沿って整列します。 |
6 |
GroupLayoutは、コンテナ内にコンポーネントを配置するために、コンポーネントを階層的にグループ化します。 |
7 |
SpringLayoutは、一連の制約に従って、関連付けられたコンテナの子を配置します。 |
SWING-メニュークラス
すべてのトップレベルウィンドウにはメニューバーが関連付けられていることがわかっています。 このメニューバーは、エンドユーザーが使用できるさまざまなメニュー項目で構成されています。 さらに、各選択肢には、ドロップダウンメニューと呼ばれるオプションのリストが含まれています。 MenuコントロールとMenuItemコントロールは、MenuComponentクラスのサブクラスです。
メニュー階層
メニューコントロール
Sr.No. | Class & Description |
---|---|
1 |
JMenuBarオブジェクトはトップレベルウィンドウに関連付けられています。 |
2 |
メニューの項目は、JMenuItemまたはそのサブクラスのいずれかに属している必要があります。 |
3 |
JMenuオブジェクトは、メニューバーから表示されるプルダウンメニューコンポーネントです。 |
4 |
JCheckboxMenuItemはJMenuItemのサブクラスです。 |
5 |
JRadioButtonMenuItemはJMenuItemのサブクラスです。 |
6 |
JPopupMenuは、コンポーネント内の指定された位置に動的にポップアップできます。 |
SWING-コンテナー
コンテナは、SWING GUIコンポーネントの不可欠な部分です。 コンテナは、コンポーネントを配置できるスペースを提供します。 AWTのコンテナはコンポーネントそのものであり、コンポーネントをそれ自体に追加する機能を提供します。 以下は、考慮すべき特定の注目すべき点です。
- コンテナのサブクラスは、コンテナと呼ばれます。 たとえば、JPanel、JFrame、JWindow。
- コンテナはそれ自体にコンポーネントのみを追加できます。
- デフォルトのレイアウトは各コンテナにあり、 setLayout メソッドを使用してオーバーライドできます。
スイングコンテナ
以下は、SWINGを使用してGUIを設計する際に一般的に使用されるコンテナーのリストです。
Sr.No. | Container & Description |
---|---|
1 |
JPanelは最も単純なコンテナです。 他のパネルなど、他のコンポーネントを配置できるスペースを提供します。 |
2 |
JFrameは、タイトルと境界線を持つトップレベルウィンドウです。 |
3 |
JWindowオブジェクトは、ボーダーもメニューバーもないトップレベルのウィンドウです。 |