「コントローラを初期化するには」の版間の差分
提供: tknotebook
| 5行: | 5行: | ||
FXMLファイルをロードが完了した時、そのタイミングで対応するコントローラのメソッドが起動できると何かと便利です。必須と言っていいと思います。 | FXMLファイルをロードが完了した時、そのタイミングで対応するコントローラのメソッドが起動できると何かと便利です。必須と言っていいと思います。 | ||
| − | + | JavaFX 2.2 以降では、以下のソースのように、public で 無引数の initializeメソッドを実装すると、 | |
FXMLのロードが完了し、fx:id が指定されたノードで id と同名のフィールドが初期化された後、 | FXMLのロードが完了し、fx:id が指定されたノードで id と同名のフィールドが初期化された後、 | ||
| − | + | initializeメソッドが呼ばれるようになりました。とても簡単です。 | |
| + | initailizeメソッド を public にしたくない場合は `アノテーション @FML を付けてください。 | ||
| − | public class Controller | + | |
| + | public class Controller { | ||
// ノードを格納するフィールド | // ノードを格納するフィールド | ||
public WebView webview; | public WebView webview; | ||
| 23行: | 25行: | ||
// 初期化メソッド | // 初期化メソッド | ||
| − | + | public void initialize() { | |
| − | public void initialize( | + | |
this.engine = webview.getEngine(); | this.engine = webview.getEngine(); | ||
stateLabel.setText(engine.getLoadWorker().stateProperty().get().toString()); | stateLabel.setText(engine.getLoadWorker().stateProperty().get().toString()); | ||
2016年2月20日 (土) 11:06時点における版
メインページ>コンピュータの部屋#JavaFX>JavaFX Tips
FXMLファイルをロードが完了した時、そのタイミングで対応するコントローラのメソッドが起動できると何かと便利です。必須と言っていいと思います。
JavaFX 2.2 以降では、以下のソースのように、public で 無引数の initializeメソッドを実装すると、 FXMLのロードが完了し、fx:id が指定されたノードで id と同名のフィールドが初期化された後、 initializeメソッドが呼ばれるようになりました。とても簡単です。
initailizeメソッド を public にしたくない場合は `アノテーション @FML を付けてください。
public class Controller {
// ノードを格納するフィールド
public WebView webview;
public Label stateLabel;
private WebEngine engine;
// イベントハンドラ
public void load(ActionEvent actionEvent) {
engine.load("http://www.asahi.com");
}
// 初期化メソッド
public void initialize() {
this.engine = webview.getEngine();
stateLabel.setText(engine.getLoadWorker().stateProperty().get().toString());
engine.getLoadWorker().stateProperty().addListener(
(ObservableValue<?extends Worker.State>p, Worker.State oldState, Worker.State newState) -> {
stateLabel.setText(newState.toString());
if (newState == Worker.State.SUCCEEDED) {
((Stage) webview.getScene().getWindow()).setTitle(engine.getTitle());
}
}
);
}
}