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