「Javaってどんなものが作れるの?」って聞かれたら、真っ先に思い浮かぶのはコマンドラインで動く黒い画面のアプリケーションかもしれません。でも、Javaでできることはそれだけじゃないんです!今回は、みんなが普段使っているような見た目があって、マウスでポチポチ操作できるアプリ、つまりGUI (Graphical User Interface) アプリケーションをJavaで作る方法を紹介していきます。
前回の記事ではJavaの基礎の基礎を学んできましたね。今回はその知識を活かして、いよいよ「見える」アプリケーションの世界へ足を踏み入れましょう!
GUIアプリって?
GUIアプリというのは、ボタンやテキストボックス、画像など、視覚的な要素(コンポーネントって呼びます)を使って操作するアプリケーションのことです。Webブラウザも、お絵かきソフトも、スマホのアプリも、ほとんどがGUIアプリですよね。これまでの記事で学んだSystem.out.println()で文字を出力するだけのプログラムとは一味も二味も違います。
なんでGUIアプリを作るの?
- 直感的な操作性: コマンドを覚える必要がなく、マウスや指で簡単に操作できます。
- 見た目が楽しい: 文字だけの画面より、カラフルな画面の方が使っていて楽しいですよね。
- ユーザーフレンドリー: 誰でも簡単に使えるアプリが作れます。
JavaでGUIアプリを作るには?
JavaでGUIアプリを作るための技術はいくつかありますが、今回はJavaFXというフレームワークに焦点を当てて紹介します。昔は「Swing」なんていうのもありましたが、今から始めるならJavaFXがおすすめです!
JavaFXって何が良いの?
JavaFXは、こんな良いところがあるんです。
- モダンなUI: スマホアプリみたいに、見た目が今っぽい、かっこいいアプリが作れます。
- CSSでデザイン: Webサイトの見た目を作るCSSと同じ感覚で、アプリのデザインを細かくカスタマイズできます。
- FXMLでUI設計: XMLという形式のファイルで画面のレイアウトを設計できるので、コードと見た目の設計を分けられます。
- 豊富なコンポーネント: ボタン、テキストボックス、リスト、グラフなど、アプリ開発に必要な部品(コンポーネント)がたくさん用意されています。
JavaFXの基本構造
JavaFXアプリケーションの基本的な構造を見ていきましょう。ちょっと難しく感じるかもしれませんが、ポイントを押さえれば大丈夫です!
1. Applicationクラスを継承する
JavaFXアプリは、必ずjavafx.application.Applicationクラスを継承したクラスを作成します。このクラスがアプリのエントリーポイント(最初に実行される場所)になります。
Java
import javafx.application.Application;
import javafx.stage.Stage;
public class MyFirstFXApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// ここにGUIの処理を書く
}
public static void main(String[] args) {
launch(args); // JavaFXアプリケーションを起動する
}
}
startメソッド: アプリが起動するときに最初に呼ばれるメソッドです。ここにUI(ユーザーインターフェース)の作成やイベント処理などのメインのロジックを記述します。Stageクラス: アプリケーションのウィンドウそのものを表します。イメージとしては、デスクトップに表示される四角い枠のことです。mainメソッド: Javaアプリケーションのおなじみのエントリーポイントです。launch(args)を呼び出すことで、JavaFXアプリケーションを起動します。
2. SceneクラスにUIを配置する
Sceneクラスは、Stageの中に表示されるコンテンツを表します。舞台(Stage)の上に載せるセット(Scene)のようなものです。このSceneの中に、ボタンやテキストボックスなどのUIコンポーネントを配置していきます。
Java
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene; // Sceneをインポート
import javafx.scene.layout.StackPane; // レイアウト用のコンテナをインポート
import javafx.scene.control.Label; // ラベルコンポーネントをインポート
public class MyFirstFXApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// ラベルを作成
Label label = new Label("こんにちは、JavaFX!");
// レイアウトコンテナを作成(ここではStackPaneを使用)
StackPane root = new StackPane();
root.getChildren().add(label); // ラベルをコンテナに追加
// Sceneを作成し、コンテナをセット
Scene scene = new Scene(root, 300, 200); // 幅300、高さ200のシーン
// StageにSceneをセット
primaryStage.setTitle("私の初めてのJavaFXアプリ"); // ウィンドウのタイトルを設定
primaryStage.setScene(scene); // StageにSceneをセット
primaryStage.show(); // ウィンドウを表示
}
public static void main(String[] args) {
launch(args);
}
}
このコードを実行すると、「こんにちは、JavaFX!」と表示された小さなウィンドウが表示されます。
Label: テキストを表示するためのコンポーネントです。StackPane: レイアウトコンテナの一つです。コンポーネントを中央に重ねて配置するのに使います。他にもHBox(横に並べる)、VBox(縦に並べる)、GridPane(グリッド状に並べる)など、いろいろなレイアウトコンテナがあります。
ちょっと複雑な例:ボタンとイベント処理
今度は、ボタンをクリックしたら表示が変わるアプリを作ってみましょう。これがGUIアプリの醍醐味、イベント処理です!
Java
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button; // ボタンをインポート
import javafx.scene.control.Label;
import javafx.scene.layout.VBox; // 縦に並べるVBoxをインポート
import javafx.geometry.Pos; // 配置を設定するためにインポート
public class ButtonClickApp extends Application {
private Label messageLabel; // メッセージを表示するラベル
@Override
public void start(Stage primaryStage) throws Exception {
// メッセージを表示するラベルを作成
messageLabel = new Label("ボタンを押してください!");
// ボタンを作成
Button clickButton = new Button("クリック!");
// ボタンがクリックされたときの処理を設定
clickButton.setOnAction(event -> {
messageLabel.setText("ボタンがクリックされました!");
});
// VBoxでラベルとボタンを縦に並べる
VBox root = new VBox(10); // 間隔を10pxにする
root.setAlignment(Pos.CENTER); // 中央揃えにする
root.getChildren().addAll(messageLabel, clickButton); // ラベルとボタンを追加
// Sceneを作成
Scene scene = new Scene(root, 400, 250);
// StageにSceneをセット
primaryStage.setTitle("ボタンクリックアプリ");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
このアプリでは、ボタンをクリックするとmessageLabelのテキストが「ボタンがクリックされました!」に変わります。
setOnAction: ボタンがクリックされたときに実行される処理を設定するメソッドです。event -> { ... }: これはラムダ式というJavaの記法です。簡単に言うと、「ボタンがクリックされたら、この中の処理を実行してね」という指示になります。
次のステップは?
今回はJavaFXのほんのさわりだけを紹介しました。これからGUIアプリ開発を始めるにあたって、「こんな風に作るんだ!」という雰囲気を掴んでもらえたら嬉しいです。
JavaFXには、もっとたくさんの機能やコンポーネント、そして画面のデザインを効率的に行うためのScene Builderというツールもあります。これらを使いこなすことで、より複雑で魅力的なGUIアプリを作ることができるようになります。
まとめ
- JavaFXは、JavaでモダンなGUIアプリケーションを開発するためのフレームワークです。
Applicationクラスを継承し、startメソッドにUIのロジックを記述します。Stageはウィンドウ、Sceneはコンテンツを表します。- ボタンやラベルなどのコンポーネントを配置し、イベント処理を行うことでインタラクティブなアプリが作れます。
これから一緒に、JavaFXを使って楽しいGUIアプリを作っていきましょう!
これまでの記事はこちらから確認できます! ToolDocs | 様々なツールや技術情報を紹介します
何か作ってみたいGUIアプリのアイデアはありますか?それとも、特定のコンポーネントの使い方をもっと詳しく知りたいですか?


コメント