最終更新日:180213 原本2014-11-22 

アクションイベントを使う (1/4)

■TextFieldとButton

GUIの基本といえば、やはり「ユーザーからの入力」と「命令の実行」に関するものでしょう。これらについて、一般的なアプリケーションでもっとも馴染み深いものといえば、「入力フィールド」と「プッシュボタン」ですね。今回はこれらを利用してみましょう。

●TextFieldについて
まずは、入力フィールドです。もっともよく使われるのは、1行だけのテキスト入力を行うためのものですね。これは、javafx.scene.controlパッケージに「TextField」というクラスとして用意されています。これは以下のようにしてインスタンスを作成します。
new TextField()
new TextField( 初期値 )

引数なしでnewするのが基本です。Stringの引数を指定すると、そのテキストを初期値としてフィールドに設定してくれます。入力されたテキストは、以下のようにしてやりとりできます。

・テキストの取得
String 変数 = 《TextField》.getText();

・テキストの変更
《TextField》.setText( テキスト );

この他、TextFieldでは「プロンプトテキスト」というものも利用できます。これは、フィールドに何も書かれておらず、選択もされていないときに、薄いグレーでメッセージを表示するものです。よくフォームの入力フィールドなどに「お名前」「住所」というようなガイドとなるテキストが薄く表示されていたりしますね? あれです。

・プロンプトテキストの設定
《TextField》.setPromptText( テキスト );


●Buttonについて
プッシュボタンは、javafx.scene.controlパッケージに「Button」というクラスとして用意されています。これも以下のようにしてインスタンスを作成できます。
new Button()
new Button( 表示テキスト )


引数にStringを指定してnewすると、そのテキストをボタンに表示します。プッシュボタンを使うときはたいてい「送信」とか「クリック」というようにボタンにテキストを表示しますから、この書き方が基本と考えていいでしょう。またTextFieldと同様に、getText/setTextで表示テキストを操作することも可能ですから、new Button()でボタンを作成し、後で表示テキストを設定することもできます。

下のリスト欄に、LabelTextFieldButtonといったGUIを組み込んだアプリケーションのソースコードを掲載しておきます。それぞれインスタンス作成後、BorderPaneに組み込んで表示しています。

●プログラム・リスト●

*program list*
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package com.tuyano.libro;
 
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
 
public class App extends Application {
    Label label;
    TextField field;
    Button button;
 
    public static void main(String[] args) {
        launch(args);
    }
 
    @Override
    public void start(Stage stage) throws Exception {
        label = new Label("This is JavaFX!");
        field = new TextField();
        button = new Button("Click");
        BorderPane pane = new BorderPane();
        pane.setTop(label);
        pane.setCenter(field);
        pane.setBottom(button);
        Scene scene = new Scene(pane, 320, 120);
        stage.setScene(scene);
        stage.show();
    }
 
}

「初心者のためのJavaFXプログラミング入門」に戻る