java swing tutorial container
この包括的なJavaSwingビデオチュートリアルでは、GUI Swing Frameworkのさまざまなコンポーネントと、JPanel、JFrame、JButtonなどの関連概念について説明しています。
グラフィカルユーザーインターフェイス(一般にGUIと呼ばれます)を使用して、ユーザーがアプリケーションを簡単に使用できるようにすることで、視覚的なインターフェイスを備えたアプリケーションを構築します。
アプリケーションのビジュアルインターフェイスを使用すると、アプリケーションのナビゲートが容易になり、コントロールをより効率的に使用できるようになります。また、ユーザーにとって視覚的に魅力的です。
Swingは、主にアプリケーションのGUIを作成するために使用されます。
=> すべてのJavaトレーニングシリーズを見るには、ここにアクセスしてください。
学習内容:
- JavaSwingのビデオチュートリアル
- JavaSwingとは
- JavaSwingコンポーネント
- JavaのSwingクラス
- SwingとJavaFX
- 結論
JavaSwingのビデオチュートリアル
JavaSwingとは
Javaは、さまざまなGUIアプリケーションの開発に役立つ多くのGUIフレームワークを提供します。以前のチュートリアルで1つ、つまりAbstract WindowToolkitまたはAWTを見てきました。 AWTはJavaで最も古いGUIフレームワークの1つであり、プラットフォームにも依存します。 AWTのもう1つの欠点は、その重量のあるコンポーネントです。
このチュートリアルでは、Javaのさらに別のGUIフレームワーク、つまり「SWING」について説明します。 JavaのSwingフレームワークは、Java Foundation Classesの一部であるか、一般にJFCと呼ばれます。 JFCは、C ++のMFC(Microsoft Foundation Classes)に似たAPIです。 JFCには、Swing、AWT、およびJava2Dが含まれています。
JavaのSwingフレームワークはAWTフレームワークの上に構築されており、AWTと同じようにGUIアプリケーションを作成するために使用できます。ただし、AWTとは異なり、Swingコンポーネントは軽量で、プラットフォームに依存しません。
Swingフレームワークは完全にJavaで書かれています。 JavaのSwingフレームワークは、「javax.swing」パッケージを通じて提供されます。 javax.swingパッケージのクラスは、文字「J」で始まります。したがって、javax.swingパッケージには、JButton、JFrame、JTextField、JTextAreaなどのクラスがあります。
一般に、Swing APIには、AWTに存在するjavax.swingパッケージで定義されたすべてのコントロールがあります。したがって、ある意味でスイングはAWTの代わりとして機能します。また、Swingにはさまざまな高度なコンポーネントのタブ付きペインがあります。 JavaのSwingAPIは、MVC(Model View Controller)アーキテクチャを採用しています。
このアーキテクチャの主な特徴は次のとおりです。
- スイングコンポーネントのデータは、モデルを使用して表されます。
- ビューを使用して視覚的に表現されます。
- MVCアーキテクチャのコントローラーコンポーネントは、ビューでユーザーからの入力を読み取り、これらの変更がコンポーネントデータに渡されます。
- 各Swingコンポーネントでは、モデルが別個のものであるのに対し、ビューとコントローラーは一緒にクラブされています。これにより、スイングにプラグ可能なルックアンドフィール機能が提供されます。
スイングAPIの機能を以下に要約します。
- Swingコンポーネントはプラットフォームに依存しません。
- APIは拡張可能です。
- スイングコンポーネントは軽量です。スイングコンポーネントは純粋なJavaで記述されており、コンポーネントは基盤となるシステムコールの代わりにJavaコードを使用してレンダリングされます。
- Swing APIは、TabbedPane、Tree、Colorpicker、テーブルコントロールなど、機能が豊富な一連の高度なコントロールを提供します。
- スイングコントロールは高度にカスタマイズ可能です。これは、コンポーネントの外観またはルックアンドフィールが内部表現に依存しないため、必要に応じてカスタマイズできるためです。
- 値を変更するだけで、実行時のルックアンドフィールを変更できます。
JavaSwingコンポーネント
Swingには、プログラムに含めることができるコンポーネントの大きなセットがあり、高度にカスタマイズされた効率的なGUIアプリケーションを開発するために使用できる豊富な機能を利用できます。
では、コンポーネントとは何ですか?
コンポーネントは、視覚的に表現でき、通常は独立しているコントロールとして定義できます。特定の機能があり、SwingAPIでは個別のクラスとして表されます。
例えば、 Swing APIのクラスJButtonはボタンコンポーネントであり、ボタンの機能を提供します。
1つ以上のコンポーネントがグループを形成し、このグループを「コンテナ」に配置できます。コンテナは、コンポーネントを表示したり、コンポーネントの間隔やレイアウトなどを管理したりできるスペースを提供します。
Javaでは、コンテナは次のように2つのタイプに分けられます。
JavaのSwingクラス
JavaのSwingAPI階層を以下に示します。
上記の階層からわかるように、コンテナクラス(フレーム、ダイアログ、パネル、アプレットなど)があります。SwingAPIのJComponentクラスから派生したコンポーネントクラスもあります。 JComponentから継承するクラスには、JLabel、JList、JTextBoxなどがあります。
SwingAPIの重要なクラスのいくつかは次のとおりです。
- JWindow: SwingのJWindowクラスは、Windowクラスを直接継承します。 JWindowクラスは、デフォルトのレイアウトとして「BorderLayout」を使用します。
- JPanel: JPanelはJComponentクラスの子孫であり、AWTクラスPanelと同様の行にあり、デフォルトのレイアウトとして「FlowLayout」があります。
- JFrame: JFrameはFrameクラスの子孫です。フレームに追加されたコンポーネントは、フレームのコンテンツと呼ばれます。
- JLabel: JLabelクラスは、JComponentのサブクラスです。これは、アプリケーションでテキストラベルを作成するために使用されます。
- JButton: Swingのプッシュボタン機能はJButtonによって提供されます。文字列、アイコン、またはその両方をJButtonオブジェクトに関連付けることができます。
- JTextField: JTextFieldクラスは、1行のテキストを編集できるテキストフィールドを提供します。
JavaのJFrame
一般に、フレームは、ボタン、ラベル、テキストフィールドなどの他のコンポーネントを含むことができるコンテナです。フレームウィンドウには、タイトル、境界線、およびメニュー、テキストフィールド、ボタン、その他のコンポーネントを含めることができます。アプリケーションには、コンポーネントを追加できるようにフレームが含まれている必要があります。
Java Swingのフレームは、クラスjavax.swing.JFrameで定義されています。 JFrameクラスはjava.awt.Frameクラスを継承します。 JFrameは、swingを使用するGUIアプリケーションのメインウィンドウのようなものです。
2つのアプローチを使用してJFrameウィンドウオブジェクトを作成できます。
バーチャルリアリティビデオの場所
#1)JFrameクラスを拡張する
最初のアプローチは、フレームを構築するための新しいクラスを作成することです。このクラスは、javax.swingパッケージのJFrameクラスを継承します。
次のプログラムは、このアプローチを実装しています。
import javax.swing.*; class FrameInherited extends JFrame{ //inherit from JFrame class JFrame f; FrameInherited(){ JButton b=new JButton('JFrame_Button');//create button object b.setBounds(100,50,150, 40); add(b);//add button on frame setSize(300,200); setLayout(null); setVisible(true); } } public class Main { public static void main(String() args) { new FrameInherited(); //create an object of FrameInherited class } }
出力:
#2)JFrameクラスをインスタンス化する
import javax.swing.*; public class Main { public static void main(String() args) { JFrame f=new JFrame('JFrameInstanceExample');//create a JFrame object JButton b=new JButton('JFrameButton');//create instance of JButton b.setBounds(100,50,150, 40);//dimensions of JButton object f.add(b);//add button in JFrame f.setSize(300,200);//set frame width = 300 and height = 200 f.setLayout(null);//no layout manager specified f.setVisible(true);//make the frame visible } }
出力:
上記のプログラムでは、JFrameクラスのインスタンスを作成することにより、JFrameクラスからフレームを作成しました。
JavaのJPanel
パネルは、フレームウィンドウ内に含まれるコンポーネントです。フレームには、内部に複数のパネルコンポーネントを含めることができ、各パネルコンポーネントには他のいくつかのコンポーネントがあります。
簡単に言うと、パネルを使用してフレームを分割できます。各パネルは、その中に他のいくつかのコンポーネントをグループ化します。つまり、パネルを使用してフレーム内のコンポーネントを整理します。
パネルコンポーネントを実装するswingAPIクラスはJPanelです。 JPanelクラスはJComponentを継承し、デフォルトのレイアウトとしてFlowLayoutを持っています。
次のプログラムは、javax.swingパッケージクラスを使用してフレーム内にパネルコンテナを作成する方法を示しています。
import javax.swing.*; class JPanelExample { JPanelExample(){ JFrame frame = new JFrame('Panel Example'); //create a frame JPanel panel = new JPanel(); //Create JPanel Object panel.setBounds(40,70,100,100); //set dimensions for Panel JButton b = new JButton('ButtonInPanel'); //create JButton object b.setBounds(60,50,80,40); //set dimensions for button panel.add(b); //add button to the panel frame.add(panel); //add panel to frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JPanelExample(); //create an object of FrameInherited class } }
出力:
ここにフレームがあります。フレーム内にパネルを作成します。次に、パネル内にボタンを作成します。このようにして、パネルを使用して他のコンポーネントを保持できます。
JavaのJTextArea
TextAreaは、編集可能なテキストフィールドを定義します。複数行にすることができます。テキスト領域を定義するswingクラスはJTextAreaであり、JTextComponentクラスを継承します。
パブリッククラスJTextAreaはJTextComponentを拡張します
JTextAreaクラスには、さまざまなオプションを使用してテキスト領域を作成できる4つのコンストラクターが含まれています。
- JTextArea(): デフォルトのコンストラクタ。空のテキスト領域を作成します。
- JTextArea(String s): デフォルト値としてsを使用してtextareaを作成します。
- JTextArea(int行、int列): 指定された行x列のテキスト領域を作成します。
- JTextArea(String s、int行、int列): 指定された行x列とデフォルト値sを持つテキストare2aを作成します。
次のJavaプログラムは、SwingのJTextAreaコンポーネントの例を示しています。
import javax.swing.*; class JTextAreaExample { JTextAreaExample(){ JFrame frame= new JFrame(); JTextArea t_area=new JTextArea('JTextArea example'); //create object of JTextArea t_area.setBounds(10,30, 150,100); //set its dimensions frame.add(t_area); //add it to the frame frame.setSize(200,200); frame.setLayout(null); frame.setVisible(true); } } public class Main { public static void main(String() args) { new JTextAreaExample(); //create an object of TextAreaExample class } }
出力:
JavaのJButton
ボタンは、名前またはラベルが付いたプッシュボタンを作成するために使用されるコンポーネントです。スイングでは、ラベル付きボタンを作成するクラスはJButtonです。 JButtonはAbstractButtonクラスを継承します。 ActionListenerイベントをボタンに関連付けて、ボタンが押されたときに何らかのアクションを実行させることができます。
JavaSwingsでJButtonのサンプルプログラムを実装しましょう。
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('JButton Example'); //create JFrame object JButton button=new JButton('Button'); //Create a JButton object button.setBounds(50,50,75,35); //set dimensions for button frame.add(button); //add button to the frame frame.setSize(250,200); frame.setLayout(null); frame.setVisible(true); } }
出力:
JavaのJList
リストは複数のテキストアイテムで構成されます。ユーザーは、一度に1つのアイテムまたは複数のアイテムを選択できます。スイングAPIでリストを実装するクラスはJListです。 JListは、JComponentクラスの子孫です。
以下に、JListクラスのコンストラクターを示します。
- JList(): 空の読み取り専用リストを作成するデフォルトのコンストラクター。
- JList(array () listItem): 最初に配列listItemの要素を含むJListを作成します。
- JList(ListModel dataModel): 指定されたモデルdataModelの要素を含むリストを作成します。
JListコンポーネントの簡単なデモンストレーションを以下に示します。
import javax.swing.*; public class Main { public static void main(String() args) { JFrame frame= new JFrame('JList Example'); //create a list model and add items to it DefaultListModel colors = new DefaultListModel<>(); colors.addElement('Red'); colors.addElement('Green'); colors.addElement('Blue'); //create JList object and add listModel to it JList colorsList = new JList<>(colors); colorsList.setBounds(100,100, 75,50); frame.add(colorsList); //add list to the frame frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
出力:
上記のプログラムでは、最初にカラーエントリを含むlistModelを定義します。次に、JListオブジェクトを作成し、それにlistModelを追加します。次に、JListオブジェクトがフレームオブジェクトに追加され、表示されます。
JavaのJComboBox
JComboboxクラスは、ユーザーがオプションを選択できる選択肢のリストを表示します。選択した選択肢が一番上にあります。 JComboBoxは、JComponentクラスから派生します。
以下は、JComboBoxクラスによって提供されるコンストラクターです。
- JComboBox(): デフォルトのデータモデルでComboBoxを作成するデフォルトのコンストラクター。
- JComboBox(Object () items): このコンストラクターは、指定された配列項目の要素として項目を持つComboBoxを作成します。
- JComboBox(ベクターアイテム): このコンストラクターは、指定されたベクトルの要素を読み取り、これらの要素をアイテムとして使用してComboBoxを構築します。
JComboBoxクラスは、アイテムを追加/削除したり、ActionListener、ItemListenerなどを追加したりするためのメソッドも提供します。
次の例は、JavaでのJComboBoxの実装を示しています。
import javax.swing.*; class ComboBoxExample { JFrame frame; ComboBoxExample(){ frame=new JFrame('ComboBox Example'); //create a string array String country()={'India','SriLanka','Singapore','Maldives','SeyChelles'}; //create a combobox object with given string array JComboBox countries=new JComboBox(country); countries.setBounds(50, 50,90,20); frame.add(countries); //add it to the frame frame.setLayout(null); frame.setSize(200,300); frame.setVisible(true); } } public class Main { public static void main(String arg()) { new ComboBoxExample(); } }
出力:
JavaのJSlider
スライダーを使用すると、特定の範囲の値を選択できます。 Java Swing APIでは、JSliderはスライダーを実装するために使用されるクラスです。
以下は、JSliderクラスによって提供されるコンストラクターです。
- JSlider():初期値として50を持ち、範囲が0〜100のスライダーを作成するデフォルトのコンストラクター。
- JSlider(intの方向):このコンストラクターは、上記と同じように、指定された方向でスライダーを作成します。方向の値は、JSlider.HORIZONTALまたはJSlider.VERTICALのいずれかです。
- JSlider(int min、int max):このコンストラクターは、指定された最小値と最大値を使用して水平スライダーを作成するために使用されます。
- JSlider(int min、int max、int value):このコンストラクターは、min、max、およびvalueの指定された値で水平になるスライダーを作成します。
- JSlider(intの向き、int min、int max、int value):このコンストラクターは、指定された向き、min、max、およびvalueでスライダーを作成します。
次のプログラムは、JavaのJSliderをティック付きで示しています。このプログラムは、JSliderクラスでサポートされているメソッドの使用法も示しています。
import javax.swing.*; class SliderExample extends JFrame { public SliderExample() { //create a slider object JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); //set major and minor ticks for the slider slider.setMinorTickSpacing(2); slider.setMajorTickSpacing(10); slider.setPaintTicks(true); slider.setPaintLabels(true); JPanel panel = new JPanel(); panel.add(slider); //add slider to the panel add(panel); } } public class Main{ public static void main(String s()) { SliderExample frame=new SliderExample(); frame.pack(); frame.setVisible(true); } }
出力:
Javaでのイベント処理
イベントは、オブジェクトの状態の変化として定義できます。 GUIの観点からは、エンドユーザーがGUIコンポーネントを操作するとイベントが発生します。 GUIでトリガーされるイベントには、ボタンのクリック、スクロール、リストアイテムの選択、テキストの変更などがあります。
上記のGUIで発生するイベントは、ほとんどがフォアグラウンドイベントです。また、バックグラウンド操作の完了、タイマーの有効期限など、いくつかのバックグラウンドイベントを発生させることもできます。
イベント処理は、イベントが発生したときにアクションが実行されるメカニズムです。このために、イベントが発生したときに呼び出されるイベントハンドラーとも呼ばれるメソッドを定義します。 Javaは、「委任イベントモデル」と呼ばれる標準メカニズムを使用して、イベントを生成および処理します。
ルーターのネットワークセキュリティキーは何ですか
委任イベントモデルは、次のもので構成されます。
#1)出典: イベントのソースはオブジェクトです。イベントが発生するオブジェクトはソースであり、ソースはイベントに関する情報をイベントハンドラーに送信する責任があります。
#2)リスナー: リスナーは、イベントが発生したときにアクションを実行する責任があるイベントハンドラーに他なりません。 Javaでは、リスナーはイベントを待機するオブジェクトです。イベントが発生すると、リスナーはイベントを処理します。
要件は、イベントが発生したときにリスナーがそれを処理できるように、リスナーをオブジェクトに登録することです。
例えば、ボタンクリックイベントの場合、次の一連の手順を実行できます。
- ユーザーは、Clickイベントを生成するボタンをクリックします。
- 適切なイベントクラスオブジェクトが作成され、ソースデータとイベントデータがこのオブジェクトに渡されます。
- 次に、このイベントオブジェクトは、オブジェクトに登録されているリスナークラスに渡されます。
- リスナーが実行して戻ります。
それでは、Javaが提供するリスナーについて説明しましょう。
JavaのActionListener
actionListenerは、ボタンまたはメニュー項目のリスナーです。ボタンをクリックすると、関係するボタンListenerはactionListenerです。 actionListenerは、ActionEventで通知されます。
java.awt.anイベントパッケージは、ActionListenerインターフェースを定義します。このインターフェイスには、actionPerformed()メソッドが1つだけあります。
public abstract void actionPerformed(ActionEvent e);
ボタンなどの登録済みコンポーネントがクリックされると、actionPerformed()メソッドが自動的に呼び出されます。
プログラムにActionListenerを含める最も一般的なアプローチは、ActionListenerインターフェイスを実装してから、actionPerformed()メソッドを実装することです。
ActionListenerクラスを実装する手順は次のとおりです。
#1)インターフェースActionListernerを実装します。
パブリッククラスActionListenerImplはActionListenerを実装します
#2)このリスナーにコンポーネントを登録します。ボタンがリスナーに登録したいコンポーネントである場合、次のように登録します。
button.addActionListener(instanceOfListenerclass);
#3)actionPerformed()メソッドを実装/オーバーライドします。
public void actionPerformed (ActionEvent e){ //code to perform action }
したがって、上記の手順を使用して、任意のイベントをGUIコンポーネントに関連付けることができます。
次の例は、ActionListenerを使用したボタンクリックイベントを示しています。
import javax.swing.*; import java.awt.event.*; public class Main { public static void main(String() args) { JFrame frame=new JFrame('Button Click Example'); final JTextField text_field=new JTextField(); //JTextField object text_field.setBounds(50,100, 150,20); JButton click_button=new JButton('Click Me!!!'); //JButton object click_button.setBounds(20,50,75,30); click_button.addActionListener(new ActionListener(){ //add an event and take action public void actionPerformed(ActionEvent e){ text_field.setText('You Clicked the button'); } }); //add button and textfield to the frame frame.add(click_button);frame.add(text_field); frame.setSize(400,400); frame.setLayout(null); frame.setVisible(true); } }
出力:
上記のプログラムは、ActionListenerイベントを実装します。イベントはボタンクリックイベントであり、ボタンをクリックするとテキストフィールドにテキストを表示するActionListenerが関連付けられています。
JavaのKeyListener
キーの状態に変化があるたびに、KeyListenerに通知されます。 ActionListenerと同様に、KeyListenerもjava.awt.eventパッケージに含まれています。
KeyListenerインターフェースは、以下のメソッドを提供します。
public abstract void keyPressed(KeyEvent e);
public abstract void keyReleased(KeyEvent e);
public abstract void keyTyped(KeyEvent e);
キーイベントをコンポーネントに関連付けるには、上記のメソッドを実装する必要があります。 Javaでswingsを使用してKeyListenerの例を実装するのは、ユーザーに任せています。
JavaでのSwingレイアウト
コンテナ内にさまざまなコンポーネントを配置するとき、それらのコンポーネントをレイアウトしていると言います。したがって、レイアウトは、コンテナ内のコンポーネントの配置として定義できます。
コンポーネントの数が少ない限り、手動でドラッグアンドドロップして配置できます。しかし、コンポーネントを多数配置することは困難になります。この時点で、Javaのレイアウトマネージャーが役に立ちます。
LayoutManagerは、GUIアプリケーションでのコンポーネントのレイアウトを担当します。 LayoutManagerはインターフェイスであり、すべてのレイアウトマネージャークラスによって実装されます。 Javaは、次のLayoutManagerクラスを提供します。
LayoutManager | 説明 |
---|---|
javax.swing.GroupLayout | コンポーネントをグループ化し、コンテナに配置します。 |
java.awt.BorderLayout | コンポーネントは、中央、東、西、南、北の5つの方向に合うように配置されています。 |
java.awt.FlowLayout | これがデフォルトのレイアウトです。コンポーネントを方向性のある流れに配置します。 |
java.awt.GridLayout | コンポーネントを長方形のグリッドに配置します。 |
javax.swing.BoxLayout | コンポーネントはボックスに配置されます。 |
java.awt.CardLayout | 各コンポーネントはデッキ内のカードとして表示され、一度に1つのコンポーネントのみが表示されます。 |
java.awt.GridBagLayout | コンポーネントを垂直、水平、またはベースラインに沿って配置します。コンポーネントは同じサイズである必要はありません。 |
javax.swing.ScrollPaneLayout | JScrollPaneクラスによって使用され、スクロール可能なコンテナー内のコンポーネントの配置を担当します。 |
javax.swing.SpringLayoutなど。 | コンポーネント間の水平および垂直距離などの一連の制約が提供され、コンポーネントはこれらの一連の制約に従って配置されます。 |
このチュートリアルでは、FlowLayoutとGridLayoutについてのみ説明します。
JavaのFlowLayout
FlowLayoutは、コンポーネントをフロー方向に次々に配置します。これは、PanelやAppletなどのコンテナのデフォルトのレイアウトです。
FlowLayoutマネージャーを表すJavaのFlowLayoutクラスには、次のフィールドとコンストラクターが含まれています。
FlowLayoutクラスのフィールド
- public static final int LEADING
- public static final int TRAILING
- public static final int LEFT
- public static final int RIGHT
- public static final int CENTER
上記のフィールドは、コンポーネントが配置または整列される位置を定義します。
FlowLayoutクラスのコンストラクタ
- FlowLayout(): これはデフォルトのコンストラクターです。このコンストラクターは、水平方向と垂直方向に5単位のデフォルトのギャップを持つ、中央に配置されたコンポーネントを持つフローレイアウトを作成します。
- FlowLayout(int align): このコンストラクターは、指定された配置値と5単位の水平および垂直ギャップを持つフローレイアウトを作成します。
- FlowLayout(int align、int hgap、int vgap): 指定された配置値と水平および垂直ギャップを持つフローレイアウトを作成します。
以下に、JavaでのFlowLayoutの例を示します。
import javax.swing.*; import java.awt.*; class FlowLayoutClass { JFrame frame; FlowLayoutClass() { frame = new JFrame('FlowLayout Example'); //create button components JButton b1 = new JButton('A'); JButton b2 = new JButton('B'); JButton b3 = new JButton('C'); JButton b4 = new JButton('D'); JButton b5 = new JButton('E'); //add components to the frame frame.add(b1); frame.add(b2); frame.add(b3); frame.add(b4); frame.add(b5); //set layout as 'FlowLayout.CENTER' frame.setLayout(new FlowLayout(FlowLayout.CENTER)); //setting flow layout of right alignment frame.setSize(300, 300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new FlowLayoutClass(); } }
出力:
JavaのGridLayout
GridLayoutを使用すると、コンポーネントを長方形のグリッド形式でレイアウトできます。つまり、各コンポーネントは各長方形に配置されます。
GridLayoutクラスのコンストラクタ
- グリッドレイアウト (): 行の1つのコンポーネントごとに1つの列を持つグリッドレイアウトを生成するデフォルトのコンストラクター。
- GridLayout(int行、int列):このコンストラクターはグリッドレイアウトを生成します 指定された行と列で。コンポーネント間にギャップはありません。
- GridLayout(int行、int列、int hgap、int vgap):このコンストラクターを使用して、 指定された行と列、および水平方向と垂直方向のギャップを持つグリッドレイアウトを生成します。
次の例では、JavaでGridLayoutを実装します。
import javax.swing.*; import java.awt.*; class GridLayoutClass { JFrame frame; GridLayoutClass() { frame=new JFrame('GridLayout Example'); //create components to be laid out as per GridLayout JButton b1=new JButton('P'); JButton b2=new JButton('Q'); JButton b3=new JButton('R'); JButton b4=new JButton('S'); JButton b5=new JButton('T'); JButton b6=new JButton('U'); JButton b7=new JButton('V'); JButton b8=new JButton('W'); JButton b9=new JButton('X'); //add components to the frame frame.add(b1);frame.add(b2);frame.add(b3);frame.add(b4);frame.add(b5); frame.add(b6);frame.add(b7);frame.add(b8);frame.add(b9); //set frame layout to GridLayout of 3 rows and 3 columns frame.setLayout(new GridLayout(3,3)); frame.setSize(300,300); frame.setVisible(true); } } public class Main{ public static void main(String() args) { new GridLayoutClass(); } }
出力:
Javaのセットバウンド
レイアウトトピックの前にこのチュートリアルのプログラミング例を確認すると、これらの例ではレイアウトがnullに設定されていることがわかります(setLayout(null))。プログラムでレイアウトマネージャーを使用すると、コンポーネントが自動的に配置されることがわかりました。
レイアウトマネージャーを使用しない場合は、setBoundsメソッドを使用してコンポーネントのサイズと位置を指定できます。したがって、メソッドsetBoundsを使用して、コンポーネントを手動で配置し、サイズも設定します。
setBoundsメソッドの一般的な構文は次のとおりです。
setBounds(int x座標、int y –座標、int幅、int高さ)
次に、SetBoundsメソッドの例を実装しましょう。
import javax.swing.*; public class Main { public static void main(String arg()) { JFrame frame = new JFrame('SetBounds Method Test'); frame.setSize(375, 250); // Set layout as null frame.setLayout(null); // Create a Button JButton button = new JButton('ButtonWithSetBounds'); // Set position and size of a button using setBounds button.setBounds(80,30,200,40); frame.add(button); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }
出力:
AndroidでAPKを開く方法
上記のプログラムには、Buttonコンポーネントがあります。レイアウトは設定していませんが、setBoundsメソッドを使用して位置と寸法を設定しました。
SwingとJavaFX
スイング | JavaFX |
---|---|
Swingは、GUIコンポーネントを作成するためのAPIを提供します。 | JavaFXは、スクリーンビルダーに関連するスクリプトと高速UI開発を提供します。 |
将来のバージョンでは、Swingに新しい機能が追加されることはありません。 | JavaFXは豊富な機能を提供し、将来のバージョンでより多くの機能を利用できる可能性があります。 |
SwingAPIを使用してすべての標準コンポーネントを作成できます。 | JavaFXを使用すると、高度なルックアンドフィールを使用して豊富なGUIコンポーネントを作成できます。 |
Swingには多数のコンポーネントが存在します。 | JavaFXのコンポーネント数は比較的少なくなっています。 |
Swingは、フル機能のUIライブラリです。 | JavaFXは、豊富なUIコンポーネントを備えた新しいAPIです。 |
SwingのMVCサポートは緩いです。 | JavaFXはMVCパターンを一貫してサポートします。 |
よくある質問
Q#1)SwingはまだJavaで使用されていますか?
回答: はい、SwingはまだJavaで使用されており、それは多すぎます。 AWTの完全な代替として使用されることもあります。一部のAWTコンポーネントと一緒に使用されることもあります。最新のJavaFXでも使用されます。そのため、Swingは現在も使用されており、今後も長く使用される予定です。
Q#2)Java Swingはどのように機能しますか?
回答: Swing in Javaは、AWTフレームワークの上に記述されています。したがって、AWTのイベント処理はswingによって完全に継承されます。 Swingは、効率的なGUIアプリケーションを開発するために使用できる多数のコンポーネントも提供します。
Q#3)SwingはMVCに従いますか?
回答: SwingAPIは緩いMVCサポートを持っています。モデルは、コンポーネントのデータを表します。スイングコンポーネントにはモデルと呼ばれる別個の要素がありますが、コントローラーとビューはUI要素にまとめられています。このクラビングにより、スイングはプラグ可能なルックアンドフィールを持つことができます。
Q#4)JavaFXはSwingよりも優れていますか?
回答: Swingは長い間存在しており、より成熟したIDEサポートを備えています。また、コンポーネントの非常に大きなライブラリもありました。 JavaFXは比較的新しく、コンポーネントのライブラリは少ないですが、より一貫性のある更新と一貫性のあるMVCサポートを備えています。したがって、JavaFXがどのようにさらに発展し、より多くの機能を提供するかに依存します。
Q#5)AWTとSwingのどちらが優れていますか?
回答: SwingはAWTの上に構築されており、AWTと比較すると、豊富で大規模なUIコンポーネントのセットを提供します。 Swingコンポーネントは、オペレーティングシステムのルックアンドフィールを使用するAWTコンポーネントとは対照的に、ルックアンドフィールを持つこともできます。
SwingコンポーネントはAWTよりも高速です。これらすべての要因により、スイングはAWTよりも優れています。
JavaSwingの詳細
アプリケーションを作成するときは、最初にベースコンテナーが必要であり、ボタンやテキストフィールドなどの必要なコンポーネントをコンテナーに追加する必要があります。
また、任意のフィールドをクリックまたは操作を実行すると、イベントが発生し、コードはイベントをリッスンし、イベントを処理する必要があります。
スイングコンテナ
コンテナは、アプリケーションのルート要素です。他のすべてのコンポーネントはそのルートに追加され、階層を形成します。
3つのコンテナクラスがあります。
- JFrame
- JDialog
- JApplet
JFrameを使用したコンテナデモ:
import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; public class ContainerDemo { public static void main(String() args) { JFrame baseFrame =new JFrame(); baseFrame.setTitle('Base Container'); JPanel contentPane=new JPanel(); contentPane.setBackground(Color.pink); baseFrame.setSize(400, 400); baseFrame.add(contentPane); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); } }
上記のプログラムを実行すると、以下の出力が得られます。
コンポーネント
JComponentクラスは、Swing内のすべてのコンポーネントの基本クラスです。
頻繁に使用されるコンポーネントには、
- JButton
- JTextField
- JTextArea
- JRadioButton
- JComboBoxなど。
これらのコンポーネントはすべてコンテナに追加する必要があります。追加しないと、アプリケーションに表示されません。
例:
ボタンインスタンスを作成するには、
JButton clickButton = new JButton();
ボタンをコンテナに追加するには、
myFrame.add();
イベント処理
すべてのアプリケーションは、ボタンクリック、マウスクリック、ユーザーテキスト入力などのイベントによって駆動されます。イベントが発生すると、リスナーを追加し、ソースイベントオブジェクトを渡す必要があります。
内部クラスを使用すると、以下に示すように、ロジックを使用してイベントを処理できます。
public class ContainerDemo { public void createApp() { JFrame baseFrame =new JFrame(); JPanel contentPane=new JPanel(); baseFrame.setTitle('Base Container'); baseFrame.setSize(400, 400); baseFrame.add(contentPane); JButton demoButton =new JButton('click'); demoButton.setBounds(100,95,95,30); JTextArea result =new JTextArea(); result.setBounds(130,140,95,30); contentPane.add(demoButton); contentPane.add(result); baseFrame.setDefaultCloseOperation(baseFrame.EXIT_ON_CL OSE); baseFrame.setVisible(true); demoButton.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { result.setText('button clicked'); } }); } public static void main(String() args) { ContainerDemo c =new ContainerDemo(); c.createApp(); } }
結論
このチュートリアルでは、GUIアプリケーションを構築するためにJavaが提供するSwingAPIをベースに触れました。主要なスイングコンテナとコンポーネント、およびそれらの実装について説明しました。
Swingでのイベント処理についても説明しました。イベント処理メカニズムはAWTですが、swingはイベントを効率的に実装します。次に、SwingGUIアプリケーションでさまざまなコンポーネントをレイアウトまたは配置できるようにするSwingAPIによって提供されるさまざまなレイアウトマネージャーについて説明しました。
=> ここで完璧なJavaトレーニングガイドをチェックしてください。