FXMLでアクションイベントを実装する (4/5)
作成:2014-12-13 11:35
更新:2014-12-13 11:35
更新:2014-12-13 11:35
■コントローラーを実装する
では、コントローラークラスを作成しましょう。今回はcom.tuyano.libroパッケージに「AppController.java」というファイル名で用意することになります。下のリストを記述してください。これで、先ほどの<fx:script>タグを使ったのと同じ処理が実装されます。
では、これもポイントをピックアップして解説しておきましょう。
後は、特に注意すべき点はありません。既に@FXMLを指定したフィールドにはインスタンスが割り当てられていますから、Javaのコードでそれらを操作するごく普通の処理を書けばいいのです。Javaで書けるって楽ちん!
では、これもポイントをピックアップして解説しておきましょう。
@FXML Label label1;クラスには、LabelとTextFieldがインスタンスフィールドとして用意されています。が、これらの変数にインスタンスを代入する処理はどこにもありません。「@FXML」というアノテーションを付けることで、FXMLにある同名のfx:idのインスタンスがバインドされるようになっています。
@FXML TextField field1;
@FXMLアクションメソッドも、やはり@FXMLアノテーションでバインドします。メソッドはprotectedにする必要があるので注意しましょう。また、Eventクラスのインスタンスを引数として用意します。アクションイベントならば、ActionEventインスタンスが渡されます。
protected void doAction(ActionEvent ev){……}
後は、特に注意すべき点はありません。既に@FXMLを指定したフィールドにはインスタンスが割り当てられていますから、Javaのコードでそれらを操作するごく普通の処理を書けばいいのです。Javaで書けるって楽ちん!
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package com.tuyano.libro;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class AppController {
@FXML Label label1;
@FXML TextField field1;
@FXML
protected void doAction(ActionEvent ev){
String str = field1.getText();
str = "あなたは、「" + str + "」と書いた。";
label1.setText(str);
}
}
※関連コンテンツ