Javaの定番GUIライブラリSwing!導入方法と使い方を解説。

Javaの定番GUIライブラリSwing!導入方法と使い方を解説。

この記事では、Javaの定番GUIライブラリであるSwingについて解説していく。

Swingは実務で使われているケースが多く、この記事を読んでいる読者の中でも業務で使用している人は少なくだろう。

Swingとは?

SwingはJavaのGUIライブラリで、Netscape社によって開発され1996年にリリースされた。

アーキテクチャモデルとしてはMVC(Model・View・Controller)に分類される。

Swingの後継にあたるJavaFXが2008年にリリースされているものの、Swingに慣れ親しんだJavaプログラマは多く、現在でもSwingを使用しているシステムは少なくない。

これからJavaプログラマとして仕事を探す場合も、業務で使用する可能性はあるので使えるようになっておいて損はないはずだ。

Swingの使い方

では、Swingの使用方法を見ていこう!

Swingを導入する

次にSwingの導入方法を説明したいのだが、結論から言えば通常のJavaプロジェクトを開発する準備が整っていれば、すぐにSwingをGUI作成に使用することができる。

IntellijでSwingを使ったプロジェクト作成したい場合は通常のJavaプロジェクトを選択すればいい。

画面を表示する

まず最初に空の状態の画面をスクリーンに表示してみよう。

mainメソッドを作成し以下のコードを入力して、実行してみよう。

public static void main(String[] args) {
    // JFrameはウィンドウのような存在
    JFrame frame = new JFrame("Swingテスト");

    // JButtonを作りウィンドウに配置する
    JButton button = new JButton("クリック");
    button.setBounds(100,70,100, 40);
    frame.add(button);

    // ウィンドウの設定をおこない、visibleをtrueにすると画面が表示される
    frame.setSize(300,200);
    frame.setLayout(null);
    frame.setVisible(true);
}

何か問題がなければスクリーンのどこかに以下のようなウィンドウが表示されるはずだ。

このようにSwingではレイアウトの編集画面を使わずとも、GUIを表示することが可能だ。

レイアウトをおこなう

次にレイアウト画面を使ってGUIのレイアウトを作成してみよう。Swingでは「GUI Form」と呼ばれるデータを使用することで、直感的に画面レイアウトを作成することができる。

例としてIntellijでは以下のようにメニューから「GUI Form」をセレクトすることにより新しいフォームを追加することができる。

以下がレイアウトの編集画面だ。右の「Palette」からコンポーネントを選び、ドラッグドロップで配置をおこなうことができる。

Swingでは、JPanelというコンテナーのようなコンポーネントにてレイアウトのタイプを決め、その上にラベルやボタンといったコンポーネントを配置していく。

レイアウトを作成したら以下のようなコードで呼び出す。

private JPanel formPanel;

public static void main(String[] args) {
    JFrame frame = new JFrame("UserForm");
    frame.setContentPane(new UserForm().formPanel);
    frame.setSize(300,200);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

コンポーネントを使用する

Swingにはさまざまなコンポーネントが存在するが、ここではComboBoxを例にコンポーネントの使用方法を見ていこう。

ComboBoxではユーザはセットした候補の中からひとつの値を選択することができる。

String[] prefectures = { "東京都", "神奈川県", "埼玉県", "栃木県", "茨城県" };
JComboBox<String> prefectureSelect = new JComboBox<>(prefectures);
prefectureSelect.addActionListener(System.out::println);

コンポーネントを使用するうえで必要となるメソッドはあらかじめ用意されている。

  • 選択肢を追加する → addItem
  • デフォルトの値を指定する → setSelectedItem
  • 選択された値を取得する → getSelectedItem
  • 選択をリアルタイムで検知する → addActionListener

デザインスタイルを変更する look and feel

Swingには、look and feelと呼ばれるデザインスタイルのテンプレートが存在する。

そのテンプレートを切り替えることにより、簡単にコンポーネントのデザインを自分好みに変更することができる。

前章で使用したコンボボックスを”cross-platform Java L&F”というテーマに変更すると以下のようになる。

look and feelにはサードパーティ製のものもたくさん存在する。Mavenなどのビルドシステムを導入しているなら、すぐに追加して自分のプロジェクトにて使用することができる。