Java Swingは、Javaでデスクトップアプリケーションを作成するためのGUIライブラリです。ボタンやラベル、テキスト入力欄などを画面に表示し、ユーザーが操作できるインターフェースを構築することができます。
この記事では、Java Swingとは何か、どんな特徴があるのかという基本から、環境構築の手順、使い方の流れ、さらには実際に開発を行う際の注意点までを丁寧に解説します。これからJavaに触れる方も、Swingからプログラミングを始めてみましょう。
Java Swingとは?4つの特徴
Java Swingとは、JavaでGUI(グラフィカルユーザーインターフェース)アプリケーションを作成するための標準ライブラリです。ボタンやテキストフィールドなどの基本的な部品を使って、デスクトップアプリを構築できます。ここでは、そんなSwingの特徴について、具体的に見ていきましょう。
特徴①HTMLやCSSなしでUIが作れる
Java Swingでは、HTMLやCSSといったWeb技術を使わずに、すべてJavaのコードだけでユーザーインターフェース(UI)を構築できます。
一般的にWeb開発では、「UI=HTMLとCSSで作り、ブラウザで表示する」という考え方が一般的です。しかしSwingはその概念とは異なり、JButtonやJLabelといった部品クラスを使って、コード上でウィンドウや部品を定義します。
その結果、アプリケーションはブラウザ上ではなく、PCの画面上で直接動作する「デスクトップアプリ」として実行されます。見た目の調整や部品の配置もJavaコードで細かく制御できるため、開発スタイルがWebとは大きく異なるのも特徴のひとつ。コードベースでUIを組み立てるという経験は、新鮮で実践的なJava学習にもつながるでしょう。
特徴②軽量コンポーネント
Swingの大きな特徴のひとつが「軽量コンポーネント」を採用している点です。これは、ボタンやラベルなどのGUI部品が、OSのネイティブ機能に依存せず、すべてJavaによって描画・管理されていることを意味します。
従来のAWT(Abstract Window Toolkit)では、各コンポーネントがOSに依存していたため、見た目や動作に違いが出ることがありました。一方、Swingでは同じコードであれば、どの環境でも一貫した見た目と挙動を実現できます。
また軽量コンポーネントは柔軟性が高く、カスタマイズや拡張もしやすいというメリットもあります。クロスプラットフォームなアプリを開発するうえで、Swingの軽量設計は大きな強みと言えるでしょう。
特徴③カスタマイズ性が高い
Swingのもう一つの大きな特徴は、コンポーネントのカスタマイズ性が非常に高いことです。すべてのGUI部品がJavaで描画されているため、見た目や動作を自由に変更できます。例えばボタンの色や形を独自に設定したり、描画処理をオーバーライドしてオリジナルのUIを作成したりすることも可能です。
また、Look and Feel(外観と操作感)を切り替えることで、アプリ全体の雰囲気をガラッと変えることもできます。デフォルトのスタイルでは物足りない場合でも、自分のアプリに合わせたデザインを追求できるのは、Swingならではの強みと言えるでしょう。
特徴④Java標準ライブラリなので追加インストール不要
Java Swingは、JDK(Java Development Kit)に標準ライブラリの一部として提供されているため、別途ライブラリやツールをインストールする必要がありません。GUI開発を始めたいと思ったときに、Javaの開発環境さえ整っていればすぐに始められるのは、大きな利点と言えるでしょう。
企業や教育現場によっては、ネットワーク制限やセキュリティの観点から外部ライブラリの導入が難しい場合がありますが、Swingであれば安心して利用できます。このようにSwingは環境構築のハードルが低く、学習や試作にも向いているという点で、初学者から業務開発まで幅広く活用されています。
Java Swingで作れるGUIアプリ例
Java Swingは、ボタンやテキストフィールドなどの豊富なコンポーネントを組み合わせることで、さまざまなデスクトップアプリケーションを構築できます。ここでは、Swingで実際にどのようなアプリが作れるのか、具体的な例を紹介していきましょう。
電卓アプリ
Java Swingを使えば、シンプルな電卓アプリも手軽に作成できます。画面に数値表示用のテキストフィールドと数字や演算子のボタンを配置し、ボタンをクリックすると表示が更新される仕組みです。
イベント処理を使って、各ボタンのクリックに応じた計算ロジックを実装すれば、足し算・引き算・掛け算・割り算といった基本的な演算が行えるようになります。
住所録・名簿管理アプリ
Java Swingを使えば、住所録や名簿を管理するアプリも作成できます。
名前や住所を入力するためのテキストフィールドと、登録された情報を一覧表示するテーブルを組み合わせ、「追加」「削除」「編集」ボタンを用意することで、リストのデータを動的に管理できるようになります。
このようなアプリは、データの入力・表示・操作を組み合わせることで、Swingのイベント処理やテーブル管理の方法を実践的に学ぶことが可能です。CSVファイルへの保存機能を加えれば、簡単なデータベース管理ツールとしても応用できます。
チャット風インターフェースのデモアプリ
Java Swingを使うと、簡単なチャット風のインターフェースを作ることも可能です。ユーザーがテキストを入力し、「送信」ボタンを押すと、メッセージが画面に表示される仕組みを実装できます。
このようなチャット風のUIは、Swingのイベント処理・レイアウト管理・文字列操作を学ぶのに最適なサンプルです。基本のチャット機能が作れれば、応用して「ボットの返信」や「ネットワーク通信を加えたリアルチャット」も作れるようになるでしょう。
簡易的なゲーム
Java Swingを使えば、○×ゲームやパズルなどの簡単なミニゲームを作ることも可能です。さまざまなGUIのイベント処理を活用することで、インタラクティブに動作するオリジナルの仕組みを実現できます。
こうしたゲームを作ることで、イベント処理やタイマー制御など、Swingの基本機能を活用しながら楽しく学習を進められるでしょう。
Java Swingの環境構築手順
Java Swingを使ってデスクトップアプリを開発するには、まず適切な開発環境を整える必要があります。ここでは、Java Swingの開発を始めるための基本的な環境構築手順を解説します。
- Java開発環境の準備(JDKのインストール)
- IDEのインストール
- Swingプロジェクトの作成
- 作成したプロジェクト内でJavaクラスを作成
- コードを入力して実行
①Java開発環境の準備(JDKのインストール)
Java Swingを使うには、Javaプログラムのコンパイルや実行に必要なツールが含まれているJDK(Java Development Kit)をインストールする必要があります。2025年3月現在のJDKの最新バージョンはDJK21ですが、Swingを利用する場合には旧バージョンであるJDK11やJDK17のLTS(長期サポート版)を選ぶのがおすすめです。
公式サイトから適切なバージョンをダウンロードし、インストールを行いましょう。環境変数の設定は最近のJDKでは不要ですが、java -version コマンドでインストール確認をしておくと安心です。
②IDEのインストール
出典:Eclipse公式サイト
Java Swingの開発には、EclipseやIntelliJ IDEAなどのIDE(統合開発環境)を使用すると便利です。これらのIDEを使うことで、コードの補完機能やデバッグ機能が利用でき、効率よく開発を進められます。
ここでは、Eclipseを利用する前提で説明を進めます。
Eclipseの場合、公式サイトから「Eclipse IDE for Java Developers」をダウンロードし、インストールを行いましょう。初回起動時にはワークスペース(作業フォルダ)を設定し、Javaプロジェクトを作成できる状態にします。
なおEclipseの導入については、こちらの記事で詳しく解説しています。併せて参考にしてください。
③Swingプロジェクトの作成
JDKの環境が整ったら、実際にSwingのアプリを作成するためのJavaプロジェクトをEclipseで作成しましょう。プロジェクトは、「File」→「New」→「Java Project」から作成できます。
④作成したプロジェクト内でJavaクラスを作成
③で作成したプロジェクト内で、Javaファイルを作成しましょう。Javaファイルは、左のメニューにあるプロジェクトの上で右クリック→「New」→「Class」から作成できます。「public static void main(String[] args)にチェックを入れるのを忘れずに。
⑤コードを入力して実行
④で作成したJavaファイルに必要なコードを記述し、実行してみましょう。記述した処理のSwingアプリが起動します。
Java Swingの使い方
Java Swingを使うには、基本の構造やコンポーネントの種類、レイアウトの管理、イベント処理の実装 などを理解することが大切です。ここでは、Swingアプリを作成する上での基礎知識や、実際のプログラムの書き方を詳しく解説していきます。
基本構造
Swingアプリは、ウィンドウ(JFrame)を作成し、その中にボタンやラベルなどのコンポーネントを配置し、ユーザーの操作に応じたイベント処理を実装するという流れで作成します。
基本的な処理の流れを整理してみましょう。
STEP | 処理 | 説明 |
---|---|---|
STEP1 | JFrameを作成 | アプリのメインウィンドウを作成 |
STEP2 | コンポーネントを追加 | ボタン、ラベル、テキストフィールドなどのUI部品を配置 |
STEP3 | イベント処理を実装 | ボタンのクリックなどの操作に応じた処理を記述 |
この3つのステップを押さえることで、シンプルなGUIアプリを作れるようになります。
サンプルプログラム
基本的なSwingアプリの構造を示すサンプルコードを見ていきましょう。
package basicswing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class extends JFrame {
public BasicSwingApp() {
// ウィンドウの設定
setTitle(“基本的なSwingアプリ”);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout());
// ラベルを作成
JLabel label = new JLabel(“ボタンを押してください”);
// ボタンを作成
JButton button = new JButton(“クリック”);
// ボタンのイベント処理
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
label.setText(“ボタンが押されました!”);
}
});
// コンポーネントをウィンドウに追加
add(label);
add(button);
// ウィンドウを表示
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(BasicSwingApp::new);
}
}
上記の例では、まずJFrameでウィンドウを作成し、タイトル設定・サイズ指定を行っています。次にコンポーネントとして、ラベルとボタンを追加。最後にイベント処理を実装しています。
このプログラムを実行すると、ウィンドウが開き、「クリック」ボタンを押すとラベルの文字が変わるという簡単な動作を確認できるでしょう。
基本コンポーネントの種類
Java Swingには、GUIを構築するためのさまざまなコンポーネントが用意されています。ボタンやテキストフィールドのような基本的なものから、タブやテーブルといった高度なものまで、多くのUI部品を自由に組み合わせてアプリを作ることが可能です。
Swingの代表的なコンポーネントをまとめてみましょう。
コンポーネント | クラス名 | 説明 |
---|---|---|
ボタン | JButton | クリックしてアクションを実行するボタン |
ラベル | JLabel | テキストや画像を表示するためのラベル |
テキストフィールド | JTextField | 1行のテキスト入力欄 |
テキストエリア | JTextArea | 複数行のテキストを入力・表示できるエリア |
チェックボックス | JCheckBox | オン/オフを切り替えるチェックボックス |
ラジオボタン | JRadioButton | 複数の選択肢から1つを選ぶためのボタン |
コンボボックス | JComboBox | ドロップダウン形式で選択肢を表示するリスト |
リスト | JList | 複数の選択肢をリスト形式で表示 |
テーブル | JTable | 行と列のデータを表示する表組み |
JButtonやJLabelなどの基本コンポーネントはほぼすべてのアプリで使用されますが、JTableやJTabbedPaneなどの高度なコンポーネントを使えば、さらに複雑なUIも構築できます。各コンポーネントの使い方を実際のコードで見てみると、理解が深まるでしょう。
レイアウトマネージャの種類
Java Swingには、コンポーネントをウィンドウやパネル内にどのように配置するかを管理するために、レイアウトマネージャという仕組みが用意されています。これにより、ウィンドウサイズが変わってもコンポーネントが自動的に再配置されるなど、柔軟で見やすいUIを実現できます。
代表的なレイアウトマネージャとその特徴をまとめてみましょう。
レイアウトマネージャ | クラス名 | 説明 |
---|---|---|
フローレイアウト | FlowLayout | コンポーネントを左から右へ順に並べる。行が足りないと折り返す |
ボーダーレイアウト | BorderLayout | 「北・南・東・西・中央」の5つの領域に配置 |
グリッドレイアウト | GridLayout | 行×列のグリッド状に均等に配置 |
ボックスレイアウト | BoxLayout | 縦方向(Y軸)または横方向(X軸)に一列に並べる |
カードレイアウト | CardLayout | 複数の画面(カード)を切り替えて表示する |
Swingで見た目を整えるには、「どのレイアウトを選ぶか」が非常に重要です。レイアウトマネージャを使ったサンプルコードを試してみると、実感しながら学べますよ。
イベント処理の種類
Swingアプリでは、ユーザーがボタンをクリックしたりキーボードを操作したりといった、アクションに応じて動作を実行する「イベント処理」が非常に重要です。
イベント処理では、各コンポーネントにリスナー(Listener)という「監視役」を登録しておき、ユーザーが操作を行ったタイミングで対応する処理(メソッド)が実行される仕組みになっています。操作の種類ごとに対応するリスナーが用意されており、目的に応じて使い分けることで直感的なインターフェースが実現できるのです。
代表的なイベントと対応するリスナーをまとめてみましょう。
イベントの種類 | 対応するリスナー | 説明 |
---|---|---|
アクションイベント | ActionListener | ボタンがクリックされたとき、メニューが選択されたときなど |
マウスイベント | MouseListener MouseAdapter | クリック・ダブルクリック・マウス移動など |
キーボードイベント | KeyListener | キーボードのキー入力、押下・離上など |
ウィンドウイベント | WindowListener WindowAdapter | ウィンドウの開閉・最小化・アクティブ化など |
フォーカスイベント | FocusListener | フォーカスの取得・喪失(入力欄の切り替えなど) |
最もよく使うのは ActionListenerですが、複数の操作を扱う場合やイベントの詳細をカスタマイズしたい場合は、Adapterクラスを使うと便利です。
Java SwingでGUI開発を始める注意点
Java Swingは比較的手軽にGUIアプリケーションを作れるライブラリですが、開発を始める前にいくつか知っておくべき注意点があります。ここでは、Swing開発を始めるにあたって気をつけたいポイントを解説します。
先にJavaの基礎を習得しておこう
Swingを使ってGUIアプリを開発するには、Javaの基本文法やオブジェクト指向の仕組みをある程度理解しておくことが重要です。Swingは見た目に注目されがちですが、実際の開発ではクラスやメソッドの構成、イベント処理の実装など、Javaの基本的な構文と考え方がしっかり使われています。
まずは、Javaの基本構文・変数・条件分岐・繰り返し・クラスとオブジェクトの仕組みを一通り学んでからSwingに進むことで、よりスムーズに開発を楽しめるようになります。Swingは「基礎の応用編」として取り組むのがおすすめです。
Javaプログラミングについて詳しく知りたい方は、こちらの記事も参考にしてください。
最初から複雑なUIに挑戦しない
Swingを使うと、さまざまな部品を組み合わせて高度な画面を作ることができますが、開発の最初から複雑なUIに挑戦するのは避けた方が無難です。
複数のコンポーネントを配置したり、入れ子になったパネルや複数画面の構成を一度に作ろうとすると、レイアウトが崩れたりイベント処理が混乱してしまい、かえってSwingそのものが難しいと感じてしまう原因になります。
まずは、「ボタンをクリックするとラベルの文字が変わる」といったシンプルな1機能のアプリから始めるのが理想的です。そこから徐々にテキスト入力、リスト表示、複数画面の切り替え…と段階的に機能を広げていくことで、Swingの構造や考え方を自然に理解できます。
レイアウトと構造を意識して設計しよう
SwingでGUIを作る際に見落としがちなのが、画面全体のレイアウトと構造の設計です。コンポーネントを自由に配置できるとはいえ、場当たり的に追加していくと、ウィンドウサイズに合わせて崩れたり、複雑になるほど管理が難しくなったりします。
そのため、開発を始める前に「この画面はどんなパーツで構成されるか」「横並びなのか、縦並びなのか」といった画面の構成イメージをざっくりでも描いておくことが大切です。Swingには複数のレイアウトマネージャが用意されており、それぞれ特徴があるので、用途に応じて適切なものを選ぶことも重要なポイントです。
「Java Swingは廃止される」って本当?
「Java Swingはもう古い」「そのうち廃止されるらしい」といった声を聞いたことがあるかもしれません。しかし、結論から言うと2025年現在、Swingは正式に廃止されてはいません。依然としてJDKに含まれており、既存のアプリでも多く利用されています。
とはいえ、「廃止されるかもしれない」と言われるようになった背景には、次のような理由があります。
- 開発が事実上ストップしている
- 後継候補としてJavaFXが登場した
- Webアプリやモバイルアプリへの移行が進んでいる
現時点でSwingはJDKに含まれており、サポートも継続されています。ただし、今後大きく進化する見込みはなく、「新しいものを作るなら他の選択肢も検討するべき」という立場にあるのが実情です。
既存の業務アプリなどでは今でもSwingが現役で使われており、学習素材としてもシンプルで優秀です。特にJava初心者がGUIの考え方を学ぶには、Swingは今でも十分な価値があります。
これからJava Swingを学習しようと考えている人は、このような背景についてしっかり理解したうえで進めましょう。
Swing学習にも役立つJavaの基礎が学べるおすすめ講座
Swingを学習するためには、まずJavaの基礎を習得することが大切です。ここでは、Javaの基礎が学べるおすすめ講座をご紹介します。
資格の学校TAC「Javaプログラミング入門」
資格の学校TACが提供する「Javaプログラミング入門」コースは、プログラミング初心者を対象に、Java言語の基本文法からオブジェクト指向の概念までを体系的に学べる講座です。オリジナルテキストには豊富なサンプルプログラムとポイント解説が盛り込まれ、実際に手を動かしながら理解を深めることができます。
Webポイント講義動画が用意されており、初学者がつまずきやすいトピックを効果的にフォローしてくれるのも魅力。このコースを修了することで、Oracle認定Javaプログラマ(OCJ-P)Silver試験範囲の知識を習得でき、Javaプログラマとしての第一歩を踏み出すことが可能です。
paizaラーニング「新・Java入門編」
paizaラーニングの「新・Java入門編」は、Javaプログラミングの基礎を短時間で習得できるオンライン講座です。各レッスンは約3分の動画と対応する演習問題で構成されており、初心者から経験者まで幅広く対応。全42レッスンを通じて、標準出力や変数、条件分岐、ループ、コレクションフレームワーク、オブジェクト指向の概念などを体系的に学べます。
環境構築不要で、ブラウザ上で即座に学習を開始できる点も魅力です。また、演習課題を通じて実践的なスキルを磨くことができ、学習の定着を図れます。
テックアカデミー「Javaコース」
テックアカデミーの「Javaコース」は、Java ServletやJSPを用いたWebアプリケーション開発を短期間で習得できるオンライン講座です。通過率10%の厳選された現役エンジニアがパーソナルメンターとして付き、週2回のマンツーマンメンタリングや毎日15時~23時のチャットサポートを通じて、学習をサポートしてくれます。
カリキュラムは、Javaの基礎からオブジェクト指向プログラミング、データベース連携、HTML/CSS、Git/GitHubの利用方法など、多岐にわたる内容を網羅。最終的には、日報管理システムなどの実践的なWebアプリケーションを開発し、実務で通用するスキルを身につけることが可能です。
Java SwingでGUIアプリ開発を始めよう
Java Swingは、初心者でも扱いやすいGUIライブラリとして多くの現場で活用されています。ボタンやテキストフィールドといった基本的なUI部品の使い方から、レイアウトやイベント処理の仕組みまで、段階的に学ぶことで確実にスキルが身につくのが魅力です。
将来性や注意点なども十分に理解したうえで、自分だけのGUIアプリを作るスキルを身につけ、キャリアをさらに強いものにしていきましょう。
