
Swingアプリ開発ステップアップガイド
Swing初級から中級者向けに、4つの異なるアプリケーションを段階的に開発する方法を解説します。各アプリケーションは独立しており、難易度順に並んでいます。 ① […]
Java Swingアプリケーションの基本となるウィンドウを作成するには、JFrame
クラスを使用します。JFrame
はSwingアプリケーションのメインウィンドウとして機能し、他のコンポーネントを配置するコンテナの役割を果たします。
import javax.swing.*;
public class BasicJFrameExample {
public static void main(String[] args) {
// イベントディスパッチスレッドでGUIを作成
SwingUtilities.invokeLater(() -> {
// JFrameインスタンス作成
JFrame frame = new JFrame("私の最初のウィンドウ");
// サイズ設定(幅, 高さ)
frame.setSize(400, 300);
// 閉じるボタンの動作設定
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// ウィンドウを表示
frame.setVisible(true);
});
}
}
メソッド | 説明 |
---|---|
setTitle(String title) | ウィンドウのタイトルを設定 |
setSize(int width, int height) | ウィンドウのサイズを設定(ピクセル単位) |
setDefaultCloseOperation(int operation) | 閉じるボタンの動作を設定 |
setVisible(boolean visible) | ウィンドウの表示/非表示を設定 |
setLocationRelativeTo(Component c) | ウィンドウの位置を指定したコンポーネントの中央に配置 |
setResizable(boolean resizable) | ウィンドウのサイズ変更可否を設定 |
定数 | 説明 |
---|---|
JFrame.EXIT_ON_CLOSE | アプリケーションを終了(推奨) |
JFrame.HIDE_ON_CLOSE | ウィンドウを非表示にする(デフォルト) |
JFrame.DISPOSE_ON_CLOSE | ウィンドウを破棄する |
JFrame.DO_NOTHING_ON_CLOSE | 何もしない(独自処理を実装可能) |
// ウィンドウを画面中央に表示
frame.setLocationRelativeTo(null);
import javax.swing.*;
public class PracticalJFrameExample {
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JFrame frame = new JFrame("実践的なJFrame例");
// 基本設定
frame.setSize(500, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null); // 画面中央に表示
frame.setResizable(false); // サイズ変更不可
// アイコン設定(任意)
ImageIcon icon = new ImageIcon("icon.png");
frame.setIconImage(icon.getImage());
// コンテンツペインにコンポーネントを追加
JLabel label = new JLabel("ようこそSwingの世界へ!", SwingConstants.CENTER);
frame.add(label);
frame.setVisible(true);
});
}
}
SwingUtilities.invokeLater()
を使用することでこれを保証できます。JFrame
にはコンテンツを追加するための「コンテンツペイン」があり、frame.add()
は実際にはこのコンテンツペインにコンポーネントを追加します。frame.pack()
を呼び出すと、コンポーネントに合わせて適切なサイズに自動調整されます。// コンポーネント追加後にpack()を呼び出す例
frame.add(someComponent);
frame.pack(); // コンポーネントに合わせてサイズ調整
次の章では、このJFrame
に基本的なコンポーネント(JLabel
、JButton
、JTextField
など)を追加する方法を学びます。