GUIアプリ①HelloWorld

今回から、GUIアプリの連載を始めます。
前回まで、Webアプリのフレームワークでちょっと難しかったので
GUIアプリは、初歩からやるので分かりやすいと思います。

GUIとは? グラフィカルユーザインターフェイス(Graphical User Interface)の意味です。
ユーザが画面上で視覚的に操作できるので分かりやすい特徴があります。

■Javaソース資源

#ファイル名概要修正/新規
1GuiHelloWorld.javaフレームクラス新規
作成手順 ①Javaプロジェクトの作成
②Javaソースの作成
 ②-1 クラスの作成
 ②-2 コンストラクタの作成
 ②-3 メインの作成
 ②-4 アクションパフォームドの作成

①Javaプロジェクトの作成

②Javaソースの作成
 ②-1 クラスの作成

クラスの作成で、継承元にJFrameを選択します。

ActionListenerのインターフェイスも継承します。

クラスを作成します。

まだ、エラーがあります。実装されていないメソッドの追加を選択します。

メソッドが追加されて、エラーはなくなります。

②-2 コンストラクタの作成
②-3 メインの作成
②-4 アクションパフォームドの作成
行数説明
13クラス名:GuiHelloWorld
継承元:JFrame
インターフェイス元:ActionListener
15JButtonクラスのインスタンスを生成しています。メンバ変数として定義しています。
17GuiHelloWorldクラスのコンストラクタメソッドになります。
19jButtonクラスのActionListener(アクションリスナー)の登録を行っています。
ボタン押下時にアクションリスナーのイベントが呼ばれます。
20JFrame(親ウインドウ)にjButtonクラス(ボタン)を設定します。
21JFrame(親ウインドウ)が右上にある「×」ボタンで閉じるように設定します。
22JFrame(親ウインドウ)のサイズ幅300ピクセル、高さ200ピクセルに設定しています。
23JFrame(親ウインドウ)を表示しています。
説明
39~42メインメソッドになります。コンストラクタをインスタンスして呼び出しているだけです。
44ActionListenerインターフェイスのメソッドをオーバーライドしています。
重要なメソッドです。ボタンが押されたときにイベントとして呼び出されるメソッドです。
45メソッド名:actionPerformed(ActionEvent e):アクションパフォームド
47アクションイベントがボタンのイベントであるか比較しています。
48-49メッセージダイアログを表示しています。
①引数:親コンポーネント:null
 (nullの場合、画面中央にメッセージダイアログが表示します。)
 (thisの場合、親画面の上にメッセージダイアログが表示します。)
②引数:メッセージ:HelloWorld
③引数:タイトル:informaition
④引数:メッセージタイプ:INFORMATION_MESSAGE

これで、準備が整いました。実行してみましょう。

ボタン押下します。メッセージダイアログが表示すれば成功です。お疲れ様でした!

おまけとして、①引数をthisの場合も試してみましょう。

thisに変更すると、親画面の上にメッセージダイアログが表示します。

☆まとめ☆ 今回から、GUIアプリの連載始めました。
最初は、見慣れないクラスが多かったと思うので、戸惑ったかもしれないです。
徐々に、慣れていくと思うので、頑張ってください。

■ソースコードのコピーペースト用に記載します。

GuiHelloWorld.java

package app;

import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class GuiHelloWorld extends JFrame implements ActionListener {

  JButton jButton = new JButton("ボタン");
  
  public GuiHelloWorld() throws HeadlessException {
    // TODO 自動生成されたコンストラクター・スタブ
    jButton.addActionListener(this);
    getContentPane().add(BorderLayout.CENTER,jButton);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300,200);
    setVisible(true);
  }
  
  public GuiHelloWorld(GraphicsConfiguration gc) {
    super(gc);
    // TODO 自動生成されたコンストラクター・スタブ
  }
  public GuiHelloWorld(String title) throws HeadlessException {
    super(title);
    // TODO 自動生成されたコンストラクター・スタブ
  }
  public GuiHelloWorld(String title, GraphicsConfiguration gc) {
    super(title, gc);
    // TODO 自動生成されたコンストラクター・スタブ
  }

  public static void main(String[] args) {
    // TODO 自動生成されたメソッド・スタブ
    new GuiHelloWorld();
  }

  @Override
  public void actionPerformed(ActionEvent e) {
    // TODO 自動生成されたメソッド・スタブ
    if(e.getSource() == jButton) {
      JOptionPane.showMessageDialog(this, "HelloWorld","information",
        JOptionPane.INFORMATION_MESSAGE);
    }
  }

}

Follow me!