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)イベント