Java で GUI アプリを作成する方法
概要
Java では、GUI アプリケーションを構築するためにスイングが使用されます。さまざまな機能があり、Java で GUI アプリケーションを構築するためによく使用されます。この記事では、Java の Swing ライブラリについてすべて説明します。
ジャワ・スイング
Swing は純粋な Java で開発されています。スイング コンポーネントは、すべてのプラットフォームで同じルック アンド フィールを持つことができ、プラグイン可能なルック アンド フィールを提供します。スイングコンポーネントは軽量です。
例:
クリエイティブを表示し、フレームを表示する Java プログラム
javax.swing.* をインポートします。
クラス F1 は JFrame を拡張します{
F1() {
setSize(200,200);
setTitle(“GUI デモ”);
setLocation(100,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]){
F1 f= 新しい F1();
}
}
出力:
javac F1.java
ジャワF1
コンテナ階層
最上位のコンテナ:
- 他のスイング コンポーネントが自身をペイントするための場所
- 例えば。JFrame、JDialog、JApplet
- 原子コンポーネントの配置を簡素化する
- 例: JPanel、JSplitPane、JTabbedPane
- ユーザーに情報を提示し、ユーザーからの入力を取得する独立したコンポーネント
- 例: JButton、JLabel、JComboBox、JTextField、JTable
- JButton は「プッシュ」ボタンの実装です
- ボタンは設定可能で、アクションによってある程度制御できます。
- JOptionPane を使用すると、ユーザーに値の入力を求めたり、何かを通知したりする標準ダイアログ ボックスを簡単にポップアップできます。
- このクラスは多数のメソッドがあるため複雑に見えるかもしれませんが、このクラスのほとんどすべての使用は、以下に示す静的メソッドの1 つに対する 1 行の呼び出しです。
クラスがメンバーとして変数やメソッドを持つことができるのと同様に、クラスにはネストされたクラスと呼ばれる別のクラスを含めることもできます。
内部クラスの概念は Java 1.1 で導入されました。
内部クラスを使用すると、次のような利点があります。
- コードを読みやすくする
- それを使用してユーティリティ クラスをクラス内にカプセル化できるようにする
- クラスを作成するプロセスを簡素化することで、開発者がよりオブジェクト指向になるよう実際に奨励します。
内部クラスの種類は次のとおりです。
- メンバーの内部クラス
- 静的内部クラス
- ローカルのインナークラス
- 匿名クラス
メンバー内部クラスを使用したイベント処理:
javax.swing.* をインポートします。
java.awt.* をインポートします。
インポート java.awt.event.*;
クラス M1 は JFrame を拡張します
{
コンテナc;
Jボタンb1、b2;
クラス L1 は ActionListener を実装します
{
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==b1)
{
JOptionPane.showMessageDialog(c, “ボタン 1 をクリックしました”);
}
if(ae.getSource()==b2)
{
JOptionPane.showMessageDialog(c,”ボタン 2 をクリックしました”);
}
}
}
M1()
{
c=getContentPane();
c.setLayout(new FlowLayout());
b1=新しい JButton(「クリック 1」);
b2= 新しい JButton(「クリック 2」);
c.add(b1);
c.add(b2);
L1 a= 新しい L1();
b1.addActionListener(a);
b2.addActionListener(a);
}
public static void main(String args[]){
M1 f= 新しい M1();
f.setSize(200,200);
f.setTitle(“ボタンクリック”);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
レイアウトマネージャー
Java のレイアウト マネージャーは、コンポーネントがフレームに追加されるときにコンポーネントがどのように配置されるかを決定します。AWT パッケージには次のレイアウト クラスが含まれています。
- フローレイアウト
- ボーダーレイアウト
- グリッドレイアウト
フローレイアウト
フロー レイアウトでは、段落内のテキスト行と同じように、スペースがなくなるまでコンポーネントを方向性のあるフローに配置し、スペースがなくなると次の行に配置されます。
デフォルトでは、コンポーネントは中央に配置されます。プログラマは、コンストラクターで次の引数のいずれかを使用して位置合わせを指定できます。
- FlowLayout.LEFT
- FlowLayout.CENTER
- FlowLayout.RIGHT
境界線レイアウトはコンテナーをレイアウトし、そのコンポーネントを北、南、東、西、中央の 5 つの領域に収まるように配置およびサイズ変更します。
各領域にはコンポーネントを 1 つだけ含めることができ、対応する定数 (NORTH、SOUTH、EAAST、WEST、および CENTER) によって定義されます。
プログラマは、add メソッドで以下を使用して領域を指定できます。
- add(“北”, b1);
- add(“南”,b2);
- add(“東”,b3);
- add(“西”,b4);
- add(“中央”,b5);
- add(BorderLayout.NORTH,b1);
- add(BorderLayout.SOUTH,b2);
- add(BorderLayout.EAST,b3);
- add(BorderLayout.WEST,b4);
- add(BorderLayout.CENTER,b5);
注 2 : 定数名が示されているように大文字でないとコンパイルは失敗します。
注3:上記を組み合わせることも可能です。
Jラベル
JLabel は、短いテキスト文字列または画像、あるいはその両方の表示領域です。ラベルは入力イベントに反応しません。
プログラム:
java.awt.* をインポートします。
javax.swing.* をインポートします。
インポート java.awt.event.*;
クラス S2 は JFrame を拡張します{
コンテナc;
JTextField txt1;
J ボタン btn1;
JLabel lbl1、lbl2;
S2(){
c=getContentPane();
c.setLayout(new FlowLayout());
lbl1= new JLabel(“数値を入力してください”);
txt1= 新しい JTextField(10);
btn1= new JButton(「回答」);
lbl2= 新しい JLabel();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(new L2());
}
public static void main(String args[]){
S2 from= 新しい S2();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“スクエアファインダー”);
frm.setVisible(true);
}
クラス L2 は ActionListener{ を実装します
public void actionPerformed(ActionEvent ae){
試す{
int a= Integer.ParseInt(txt1.getText());
float s= a*a;
lbl2.setText(“Square=”+s);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(c,”整数を入力してください”);
txt1.setText(" ");
txt1.requestFocus();
}
}
}
}
キーボードイベントの処理
プログラム:
java.awt.* をインポートします。
javax.swing.* をインポートします。
インポート java.awt.event.*;
クラス S7 は JFrame を拡張します{
コンテナc;
JTextField txt1;
J ボタン btn1;
JLabel lbl1、lbl2;
S7(){
c=getContentPane();
c.setLayout(new FlowLayout());
lbl1= new JLabel(“数値を入力してください”);
txt1= 新しい JTextField(10);
btn1= new JButton(「回答」);
lbl2= 新しい JLabel();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(new L2());
btn1.addKeyListener(new L3());
}
public static void main(String args[]){
S7 from= 新しい S7();
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“スクエアファインダー”);
frm.setVisible(true);
}
クラス L3 は KeyListener を実装します
{
public void keyPressed(KeyEvent ke)
{
if(ke.getKeyCode()==KeyEvent.VK_ENTER);
試す{
int a= Integer.parseInt(txt1.getText());
float s= a*a;
lbl2.setText('Square='+s');
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(c,”整数を入力してください”);
txt1.setText("");
txt1.requestFocus();
lbl2.setText("");
}
}
}
public void keyリリース(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
クラス L2 は ActionListener{ を実装します
public void actionPerformed(ActionEvent ae){
試す{
int a= Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Square=”+s);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(c,”整数を入力してください”);
txt1.setText("");
txt1.requestFocus();
lbl2.setText("");
}
}
}
}
Windows イベントの処理
プログラム:
java.awt.* をインポートします。
javax.swing.* をインポートします。
インポート java.awt.event.*;
クラス S8 は JFrame を拡張します{
コンテナc;
JTextField txt1;
J ボタン btn1;
JLabel lbl1、lbl2;
S8(){
c=getContentPane();
c.setLayout(new FlowLayout());
lbl1= new JLabel(“数値を入力してください”);
txt1= 新しい JTextField(10);
btn1= new JButton(「回答」);
lbl2= 新しい JLabel();
c.add(lbl1);
c.add(txt1);
c.add(btn1);
c.add(lbl2);
btn1.addActionListener(new L2());
btn1.addKeyLisener(new L3());
this.addWindowListener(new L4());
}
public static void main(String args[]){
S8 from= 新しい S8();
frm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frm.setSize(250,150);
frm.setTitle(“スクエアファインダー”);
frm.setVisible(true);
}
クラス L4 は WindowListener{ を実装します
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}
public void windowOpened(WindowEvent e){
JOptionPane.showMessageDialog(c,”Square Calculator へようこそ”);
}
public void windowClosed(WindowEvent e){}
public void windowClosing(WindowEvent e){
int Output= JOptionPane.showconfirmDialog(c,”終了しますか?”);
if(output==JOptionPane.YES_OPTION){
System.exit(1);
}
}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
}
クラス L2 は ActionListener{ を実装します
public void actionPerformed(ActionEvent ae){
試す{
int a=Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Square=”+s);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(c,”整数を入力してください”);
txt1.setText("");
txt1.requestFocus();
lbl2.setText("");
}
}
}
クラス L3 は KeyListener{ を実装します
public void keyPressed(KeyEvent ke){
if(ke.getKeyCode()==KeyEvent.VK_ENTER){
試す{
int a= Integer.parseInt(txt1.getText());
float s=a*a;
lbl2.setText(“Square=”+s);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(c,”整数を入力してください”);
txt1.setText("");
txt1.requestFocus();
lbl2.setText("");
}
}
}
public void keyリリース(KeyEvent ke){}
public void keyTyped(KeyEvent ke){}
}
}
結論
Swing は純粋な Java で開発されており、すべてのプラットフォームで同じルック アンド フィールを持ち、プラグイン可能なルック アンド フィールを提供するため、広く使用されています。この記事が気に入っていただければ幸いです。フィードバックがございましたらぜひお知らせください。:)❤️

![とにかく、リンクリストとは何ですか?[パート1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































