Java Swing は、JavaでGUI(グラフィカルユーザーインターフェース)アプリケーションを作成するためのフレームワークです。AWTに比べて柔軟性が高く、カスタマイズしやすいことが特徴です。
この記事では、Java Swingを使ったGUIアプリケーションの基本的な作り方を初心者向けにわかりやすく解説します。
1. Swingの基本構造
Swingでアプリケーションを作成する際の基本的な流れは以下の通りです:
- JFrameを作成:アプリケーションのメインウィンドウを作ります。
- コンポーネントを追加:ボタン、テキストフィールド、ラベルなどをウィンドウに配置します。
- イベント処理を実装:ボタンのクリックやその他の操作に応じた処理を追加します。
2. Swingの基本的なプログラム
2-1. シンプルなウィンドウを表示する
以下のコードは、シンプルなウィンドウを表示するプログラムです。
import javax.swing.*;
public class SimpleSwing {
public static void main(String[] args) {
// JFrameの作成
JFrame frame = new JFrame("Swingの基本例");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ウィンドウを表示
frame.setVisible(true);
}
}
- ポイント:
2-2. ボタンを追加する
次に、ウィンドウにボタンを追加し、ボタンをクリックした際にメッセージを表示する例です。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ButtonExample {
public static void main(String[] args) {
JFrame frame = new JFrame("ボタンの例");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ボタンを作成
JButton button = new JButton("クリックしてください");
button.setBounds(100, 100, 200, 50); // ボタンの位置とサイズ
// ボタンのクリックイベントを追加
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(frame, "ボタンがクリックされました!");
}
});
// ボタンをフレームに追加
frame.setLayout(null); // レイアウトを無効化して自由配置
frame.add(button);
frame.setVisible(true);
}
}
- ポイント:
3. レイアウトマネージャの活用
Swingでは、コンポーネントを自動的に整列させるためにレイアウトマネージャを使用します。以下に主要なレイアウトマネージャの例を示します。
3-1. FlowLayout
コンポーネントを左から右に順番に並べます。
import javax.swing.*;
import java.awt.*;
public class FlowLayoutExample {
public static void main(String[] args) {
JFrame frame = new JFrame("FlowLayoutの例");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new FlowLayout());
frame.add(new JButton("ボタン1"));
frame.add(new JButton("ボタン2"));
frame.add(new JButton("ボタン3"));
frame.setVisible(true);
}
}
3-2. BorderLayout
コンポーネントを上下左右中央に配置します。
import javax.swing.*;
import java.awt.*;
public class BorderLayoutExample {
public static void main(String[] args) {
JFrame frame = new JFrame("BorderLayoutの例");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new JButton("上"), BorderLayout.NORTH);
frame.add(new JButton("下"), BorderLayout.SOUTH);
frame.add(new JButton("左"), BorderLayout.WEST);
frame.add(new JButton("右"), BorderLayout.EAST);
frame.add(new JButton("中央"), BorderLayout.CENTER);
frame.setVisible(true);
}
}
3-3. GridLayout
グリッド形式でコンポーネントを配置します。
import javax.swing.*;
import java.awt.*;
public class GridLayoutExample {
public static void main(String[] args) {
JFrame frame = new JFrame("GridLayoutの例");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(2, 2)); // 2行2列のグリッド
frame.add(new JButton("ボタン1"));
frame.add(new JButton("ボタン2"));
frame.add(new JButton("ボタン3"));
frame.add(new JButton("ボタン4"));
frame.setVisible(true);
}
}
4. 実用的なSwingプログラム
4-1. テキストフィールドとラベルの使用
以下は、テキストフィールドに入力された内容をラベルに表示する例です。
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TextFieldExample {
public static void main(String[] args) {
JFrame frame = new JFrame("テキストフィールドの例");
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField textField = new JTextField();
textField.setBounds(50, 50, 300, 30);
JLabel label = new JLabel("ここにテキストが表示されます");
label.setBounds(50, 100, 300, 30);
JButton button = new JButton("表示");
button.setBounds(150, 150, 100, 30);
// ボタンのクリックイベント
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = textField.getText();
label.setText("入力されたテキスト: " + text);
}
});
frame.setLayout(null);
frame.add(textField);
frame.add(label);
frame.add(button);
frame.setVisible(true);
}
}
5. Swingを学ぶための次のステップ
- プロジェクトを作成する
- 公式ドキュメントを参照する
- サポートを活用する
まとめ
Java Swingを使えば、シンプルで実用的なGUIアプリケーションを簡単に作成できます。基本的なコンポーネントやレイアウトマネージャをマスターすることで、より複雑なアプリケーションを作る力を身につけることができます。
まずは小さなプロジェクトから始めて、Java Swingの可能性を広げてみてください!
入門:初心者向けガイド-120x68.webp)

コメント