Swingを使ってみよう
Java を使ってグラフィカルなコンポーネントを使ったアプリケーションを開発する為に、 Java では Swing が用意されています。ここでは Swing の各コンポーネントの使い方を順にサンプルを作りながら試してみます。
Java を使ったプログラミング方法については「Java入門」を参照されてください。
(Last modified: )
- Swingを使ったプログラミングの基本
- フレームの作成
- パネルの作成
- ラベルの作成
- テキストフィールドの作成
- パスワードフィールドの作成
- テキストエリアの作成
- ボタンの作成
- チェックボックスの作成
- ラジオボタンの作成
- メニューの作成
- ポップアップメニューの作成
- スライダーの作成
- 書式付きテキストフィールドの作成
- リストの作成
- コンボボックスの作成
- ツリーの作成
- テーブルの作成
- スピナーの作成
- BorderLayoutの使い方
- FlowLayoutの使い方
- CardLayoutの使い方
- GridLayoutの使い方
- BoxLayoutの使い方
- GridBagLayoutの使い方
- SpringLayoutの使い方
- レイアウトマネージャーを無効にする
Swing を使ったプログラミングを作成する上で基本となる事項について解説します。 Swing を使ったアプリケーションがどういったものか、そして Swing を使ったプログラムの作成からコンパイル、そして実行するまでの手順などを紹介します。
JFrame クラスを使ったフレームの作成方法です。 Swing を使った Java アプリケーションでは JFrame クラスを用いたフレームを作成し、その上にボタンやラベルなどの部品を配置していきます。
JPanel クラスを使ったパネルの作成方法です。 Swing ではパネルは主に他のコンポーネントをまとめるコンテナとしての利用されます。パネルにボタンやラベルなどの他のコンポーネントを追加し、レイアウトを設定することができます。
JLabel クラスを使ったラベルの作成方法です。 Swing ではラベルは文字列を表示する場合に使用するコンポーネントです。ラベルに文字列を表示したあと、フォントの種類やサイズ、文字の色や背景色を設定できます。またラベルは画像を表示する場合にも使用されます。
JTextField クラスを使ったテキストフィールドの作成方法です。 Swing ではテキストフィールドはユーザーが入力を行うことができる入力ボックスを作成する場合に使用します。テキストフィールドでは 1 行の入力を行います。
JPasswordField クラスを使ったパスワードフィールドの作成方法です。 Swing ではパスワードフィールドはパスワードなどの入力内容を画面に表示したくない場合に使用する入力ボックスを作成するのに使用します。
JTextArea クラスを使ったテキストエリアの作成方法です。 Swing ではテキストエリアはユーザーが複数行の入力を行うことができる入力ボックスを作成する場合に使用します。列数や行数の設定、折り返しを行うかどうか、スクロールバーの表示の有無、などを設定できます。
JButton クラスを使ったボタンの作成方法です。 Swing ではボタンは利用者にクリックしてもらうことによって何らかのアクションを行うトリガーとして使用されるものです。ボタンにはテキストや画像を表示することができ、ボタンがクリックされたときに特定の処理を行うように設定できます。
JCheckBox クラスを使ったチェックボックスの作成方法です。チェックボックスは選択/非選択の 2 つの状態を持っており、利用者がチェックボックスをクリックすることで状態を切り替えることができます。チェックボックスにはテキストや画像を表示でき、選択されているときとされていないときで画像を変更することもできます。
JRadioButton クラスを使ったラジオボタンの作成方法です。ラジオボタンはチェックボックスと同じく選択/非選択の 2 つの状態を持っていますが、単独で利用するのではなく複数のラジオボタンをグループにまとめ、複数の選択肢から一つを選択する場合に使用します。
JMenuBar クラス、 JMenu クラス、 JMenuItem クラスを使ってメニューを作成する方法です。 Swing ではメニューは大きく分けて 3 つの部分に分かれており、メニュー全体を表すメニューバー、目的別の大見出しであるメニュー、そして各メニューに含まれ最終的な動作を表すメニューアイテムから構成されます。
JPopupMenu クラスを使ったポップアップメニューの作成方法です。ポップアップメニューを使用すると、例えば右クリックを行った位置に小さいメニューを表示するといったことができるようになります。
JSlider クラスを使ったスライダーの作成方法です。スライダーはグラフィカルな手法で数値を指定する場合に利用します。数値を直接入力する代わりにスライダーを動かして値を指定します。スライダーの最小値と最大値の設定、スライダーの方向、目盛やトラックの有無、などを設定できます。
JFormattedTextField クラスを使った書式付きテキストフィールドの作成方法です。書式付きテキストフィールドを使用することで、数値を 1,000 単位でカンマで区切って表示したり、日付などを特定のフォーマットを使って表示することができます。
JList クラスを使ったリストの作成方法です。リストは複数の項目を一覧で表示しておき、その中から項目を選択してもらう場合に使用します。選択した項目を取得したり、リストの表方方法を設定したり、リストに動的に項目を追加したり削除することができます。
JComboBox クラスを使ったコンボボックスの作成方法です。コンボボックスはテキストボックスとドロップダウンリストが組み合わさったコンポーネントです。あらかじめ用意された項目リストから選択することもできますし、目的の項目がない場合は自分で別の値を直接入力することもできます。入力する事もできます。一般的にはドロップダウンリストとしての利用が主な使われ方です。
JTree クラスを使ったツリーの作成方法です。ツリーは階層構造でデータを表示するのに使用します。ツリーでは表示される項目をノードと呼びます。最上位にはルートノードがあり、その下に子ノードを持つことができます。また子ノードはさらに子ノードを持つことができます。このようにして複数の項目を階層構造で表すことができます。
JTable クラスを使ったテーブルの作成方法です。テーブルは Excel などのように表形式でデータを表示するのに使用します。行と列の数を指定してテーブルを作成しますが、あとから行や列を変更することができます。
JSpinner クラスを使ったスピナーの作成方法です。スピナーはコンボボックスやリストに似たコンポーネントです。あらかじめ用意された複数の項目の中から選択できますが、コンボボックスやリストボックスのように項目を一覧で表示して選択するのではなく、 1 つずつ項目を上下に移動させて選択します。月や日など連続したデータから選択してもらう場合に主に利用されます。
Swing で用意されているレイアウトマネージャーの一つである BorderLayout の使い方です。 BorderLayout クラスは領域を 5 つの区間に分けて管理するレイアウトマネージャーです。 1 つの区間には 1 つのコンポーネントしか配置できませんので最大 5 つのコンポーネントしか配置することは出来ません。
Swing で用意されているレイアウトマネージャーの一つである FlowLayout の使い方です。 FlowLayout クラスは左から順番に右に向かってコンポーネントを追加するレイアウトマネージャーです。右側に追加できなくなった場合には左に戻って 1 つ下の位置に追加されます。 FlowLayout では追加されるコンポーネントのサイズを変更しないので、追加されるコンポーネントが持っている推奨サイズや明示的に指定したサイズでそのまま配置されます。
Swing で用意されているレイアウトマネージャーの一つである CardLayout の使い方です。 CardLayout クラスは 1 つの領域に複数のコンポーネントを切り替えて表示するレイアウトマネージャーです。複数のカードを内部的に保持しており 1 度に 1 枚のカードだけを表示します。それぞれのカードにコンポーネントを登録しておくことで、カードを切り替えると表示されるコンポーネントが切り替わります。
Swing で用意されているレイアウトマネージャーの一つである GridLayout の使い方です。GridLayout クラスは対象となる領域全体を指定した行数と列数の格子状に分割するレイアウトです。この領域に順番にコンポーネントを配置していきます。また配置されたコンポーネントはすべて同じサイズに調整され、サイズは格子状に分割された領域のサイズになります。
Swing で用意されているレイアウトマネージャーの一つである BoxLayout の使い方です。 BoxLayout クラスはコンポーネントを縦方向又は横方向に順に配置していくレイアウトマネージャーです。同じようなコンポーネントを例えば左揃えで整列して並べる場合に便利です。
Swing で用意されているレイアウトマネージャーの一つである GridBagLayout の使い方です。 GridBagLayout クラスはコンポーネントを表形式のような形状に配置していくレイアウトマネージャーです。非常に柔軟なレイアウトを作成できる反面で設定は多少複雑になっています。
Swing で用意されているレイアウトマネージャーの一つである SpringLayout の使い方です。 SpringLayout クラスはコンポーネントを他のコンポーネントとの相対位置で指定して配置していくレイアウトマネージャーです。 GridBagLayout と同じく柔軟なレイアウトが可能となっています。
Java アプリケーションは色々な環境で実行される可能性があるため、座標を指定してコンポーネントを配置したアプリケーションを作成すると環境によっては使いにくい場合があります。そこで最終的にどの位置にコンポーネントを配置するのかは、レイアウトマネージャーに任せるようにするのが推奨されています。ただどうしても座標を一つ一つ指定してアプリケーションを作成したい場合は、レイアウトマネージャーを無効にすることで、個々のコンポーネントを指定した座標に配置できるようになります。
Swing のイベントモデルについてです。アプリケーションではボタンがクリックされたときやマウスが動いたとき、値が変更されたときなど、利用者が何らかの操作をしたとき、それにあわせて処理を実行します。 Swing ではイベントと呼ばれる機能を使って処理を実行します。
Border クラスを使ってコンポーネントにボーダーを描画する方法です。ボーダー(外枠)はラベルやリスト、パネル、テキストボックスなど JComponent クラスのサブクラスのコンポーネントに描画できます。ボーダーを描画する場合、既に用意されているボーダークラスを利用する方法と、自分で Border クラスのサブクラスを作成する方法があります。
JScrollPane クラスを使ったスクロールペインの使い方です。スクロールペインは他のコンポーネントにスクロールバーの機能を提供するものです。対象となるコンポーネントを JScrollPane クラスのオブジェクトに追加するとコンポーネントの周りにスクロールバーが表示されます。
JTabbedPane クラスを使ったタブペインの使い方です。タブペインを使用することで、複数のコンポーネントグループを、タブをクリックすることで切り替えて表示することができます。プロパティの設定画面などで項目毎にタブを用意し、 1 つの画面でタブを切り替えることで多くのコンポーネントを表示したい場合に便利です。
JSplitPane クラスを使ったスプリットペインの使い方です。スプリットペインを使用すると画面を上下又は左右に分割することができます。例えば Windows のエクスプローラーのように左側がディレクトリ、右側がファイル一覧などのように画面を分割し、それぞれ別のコンポーネントを表示する場合に利用できます。
JOptionPane クラスを使ったオプションペインの使い方です。オプションペインはユーザーにメッセージを表示したり何かを入力してもらうためのダイアログウィンドウを表示します。ダイアログを表示するには JDialog クラスも用意されています。
JDesktopPane クラスを使った仮想デスクトップと、 JInternalFrame クラスを使った内部フレームの使い方です。 Swing のアプリケーションで MDI (マルチドキュメントインターフェース)型のアプリケーションを作成する場合に使用します。 MDI アプリケーションとは例えば Excel のように 1 つのウィンドウの中に子ウィンドウが複数存在しているようなアプリケーションです。
JProgressBar クラスを使ったプログレスバーの使い方です。プログレスバー(進捗バー)は、時間がかかる処理の進捗状態を表示するために使われます。現在の進捗状況を進捗バーを使って視覚的にユーザーに表示することで、ユーザーはあとどれくらいで処理が終わるのかを知ることができます。
JColorChooser クラスを使ったカラーチューザの使い方です。カラーチューザはグラフィカルな画面上で、ユーザーが色を選択できるコンポーネントを作成する場合に使います。コンポーネントとしてフレームに追加することもできますし、色選択ダイアログとして表示するためのメソッドも用意されています。
JFileChooser クラスを使ったファイルチューザの使い方です。ファイルチューザ(ファイル選択ダイアログ)はグラフィカルな画面上でファイルを選択できるダイアログを表示する場合に使用します。開くファイルを選択したり、ファイルを保存したりする場合にファイルチューザを使うことで、ユーザーは画面上で目的のディレクトリへ移動したり、一覧の中からファイルを選択できます。
UIManager クラスを使った UI マネージャーの使い方です。 Swing では Java アプリケーションで表示されているボタンやテキストボックスなどコンポーネントの外観を UI マネージャーを使って管理しており、 UI マネージャーの設定を変更することで表示される外観を一括して変更できます。
Color クラスの使い方です。 Swing を使った GUI アプリケーションを作成する場合、色々な場面で色を指定します。 Java において色を管理しているのが Color クラスです。
Font クラスの使い方です。 Swing を使った GUI アプリケーションを作成する場合、文字列などを表示する場合にフォントを指定することができます。 Java においてフォントを管理しているのが Font クラスです。
Dimension クラスの使い方です。ラベルやボタンなどコンポーネントのサイズを指定する場合、幅及び高さの 2 つの値を指定します。この 2 つの値を保持するために利用されるのが Dimension クラスです。
ImageIcon クラスの使い方です。いくつかのコンポーネントでは画像を表示することができます。 Swing のコンポーネントをで画像を取り扱う時に利用するクラスが ImageIcon クラスです。このクラスは Icon インターフェースを実装したクラスとなっており GIF, JPEG, PNG 形式の画像を取り扱うことができます。
URL クラスの使い方です。 Swing のアプリケーションで、インターネット上の場所を示す場合には URL を使って指定します。その URL を取り扱う為のクラスが URL クラスです。
Insets クラスの使い方です。 Insets クラスはコンテナやコンポーネントの周りに余白を設ける場合に、上下左右の余白の大きさを保持するために用いられます。
Point クラスの使い方です。 Point クラスは座標などを表す x 座標と y 座標の 2 つの値を保持するために用いられるクラスです。
Timer クラスの使い方です。 Timer クラスは一定時間毎に処理を行いたい場合に利用します。指定した間隔毎に ActionEvent が発行されるため actionPerformed メソッド内に処理を記述することで繰り返し行う処理を簡単に作成することができます。
Swing を使った GUI アプリケーションの簡単なサンプルとしてスタイル機能付きのメモ帳を作成してみます。テキスト編集機能だけではなくフォントなども指定可能なメモ帳です。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。