35.
Swing
GUIフレームワーク
AWT
GUI(グラフィックユーザインターフェイス)アプリを作成するのに、GUIフレームワークが必要です。その中でAWT (Abstract Windows Toolkit) がありますが、OSに依存したり不具合発生する問題があります。
JavaFX
JavaFXはJava8以降で利用される標準GUIフレームワークです。XMLとCSSを利用したFXMLで作成し、デザインと処理クラスを分離できるのが特徴です。
Swing
Swingは、GUIフレームワークの1つです。フレームやレイアウトマネージャー、イベントなど多数の機能が搭載されています。OSの実行環境ごとにほとんど違いのないGUIコンポーネントが利用可能です。OSネイティブではないために動作速度は比較的遅くなります。
- フレーム、ラベル、ボタンなどのコンポーネント
- GUIを整列して並べるレイアウトマネージャー
- イベント処理の実行
Swingパッケージ
各コンポーネントを利用するには、Swingパッケージを読み込みが必要ですが、コーディングしてファイル保存すると自動インポートされます。
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
フレーム
フレームとは
フレームはJavaアプリのウィンドウのことです。フレームにラベル、ボタンなどのGUIコンポーネント(Component)を配置して作成します。
コンポーネントの配置

フレーム作成
フレームは「JFrame」で作成します。タイトルやその他設定ができます。
JFrame frame = new JFrame(タイトル);
サイズと位置
setBounds() でフレームのサイズや表示位置を指定します。
frame.setBounds(x座標, y座標, 幅, 高さ)
フレームを閉じたときの処理
setDefaultCloseOperation() はフレームを閉じた時の処理を指定できます。
frame.setDefaultCloseOperation(オペレーション番号)
設定値 | フレームを閉じたとき |
---|---|
DO_NOTHING_ON_CLOSE | 何もしない |
HIDE_ON_CLOSE | フレームを隠す |
DISPOSE_ON_CLOSE | フレームを隠して削除 |
EXIT_ON_CLOSE | プログラム終了 |
フレームの表示
setVisible() でフレームを表示します。フレーム表示処理は最後に実行しないと、うまく表示できないので注意しましょう。
frame.setVisible(true);
JFrameクラス
JFrameクラスを継承(extends)すると、自分のクラスがJFrameインスタンスを持った状態になるので、プログラムが省略できます。
public class クラス名 extends JFrame {
}
コンポーネント
コンポーネントとは
コンポーネント(Component)は部品という意味で、画面上に表示してユーザと対話できるGUIオブジェクトです。Swingにはさまざまなコンポーネントがありますが、ラベルとボタンはよく利用されます。
JLabel
JLabelクラスでラベル作成します。テキストや表示位置を指定できます。
JLabel label = new JLabel(テキスト, 位置);
ラベルのテキスト設定
setText() でラベルにテキスト設定します。
label.setText(テキスト);
JButton
JButtonクラスでボタン作成します。テキストや表示位置を指定でいます。
JButton button = new JButton(テキスト, 位置);
コンテナとレイアウト
Container
コンテナは、コンポーネントを1つにまとめる領域(Pane) のことです。

コンテナはJFrameから取得できます。
frame.getContentPane()
BoxLayout
BoxLayoutクラスは、垂直、水平方向にコンポーネントを整列して配置するレイアウトマネージャーです。作成したBoxLayoutはフレームに設定します。
BoxLayout boxlayout = new BoxLayout(コンテナ, BoxLayout.整列方向);
frame.setLayout(boxlayout);
整列方向
プロパティ | 整列方向 |
---|---|
X_AXIS | 左から右にコンポーネントを配置(水平方向) |
Y_AXIS | 上から下にコンポーネントを配置(垂直方向) |
LINE_AXIS | テキスト行の方向にコンポーネントを配置 |
PAGE_AXIS | 複数のページで行が進む方向にコンポーネントを配置 |
イベント
マウスやキーボード操作など、コンポーネントで何か処理が発生することをイベントといいます。
イベントリスナー
イベントが発生したときの処理をイベントリスナーといいます。イベントリスナーの設定はActionListener() を生成して、actionPerformed() と同時に利用します。
クリックイベント
new ActionListener() {
public void actionPerformed(ActionEvent e) {
//処理
}
};
イベントリスナーの登録
イベントリスナーの基本
addActionListener()で、コンポーネントにイベントリスナーを登録できます。
コンポーネント.addActionListener(イベントリスナー)
ActionListenerの実装(implements)
ActionListenerをimplementsすると、actionPerformed() メソッドを必ず実装する必要があるため正しく実装できます。
//ActionListener を implements(実装)
public class Window extends JFrame implements ActionListener {
//actionPerformed() メソッドを必ず実装
public void actionPerformed(ActionEvent e) {
}
}
演習
問題1
JFrameやJLabelを利用するGUIフレームワークはどれですか?
1)AWT
2)JavaFX
3)Swing
4)Spring
問題2
クリックやマウスを動したときに発生する処理を何といいますか?
1)コンポーネント
2)コンテナ
3)レイアウト
4)イベント