「コントローラを初期化するには」の版間の差分
提供: tknotebook
(ページの作成:「Category:コンピュータCategory:JavaFX メインページ>コンピュータの部屋#JavaFX>JavaFX Tips FXMLファイルをロードが完...」) |
|||
1行: | 1行: | ||
[[Category:コンピュータ]][[Category:JavaFX]] | [[Category:コンピュータ]][[Category:JavaFX]] | ||
[[メインページ]]>[[コンピュータの部屋#JavaFX]]>[[JavaFX Tips]] | [[メインページ]]>[[コンピュータの部屋#JavaFX]]>[[JavaFX Tips]] | ||
+ | |||
FXMLファイルをロードが完了した時、そのタイミングで対応するコントローラのメソッドを起動できると何かと便利です。 | FXMLファイルをロードが完了した時、そのタイミングで対応するコントローラのメソッドを起動できると何かと便利です。 | ||
− | 以下のソースのように、コントローラクラスで Initializable | + | 以下のソースのように、コントローラクラスで Initializable インターフェースを実装すると、 |
FXMLのロードが完了し、fx:id が指定されたノードで id と同名のフィールドが初期化された後、 | FXMLのロードが完了し、fx:id が指定されたノードで id と同名のフィールドが初期化された後、 | ||
− | + | initializeメソッドが呼ばれるようになります。 | |
2016年2月20日 (土) 10:53時点における版
メインページ>コンピュータの部屋#JavaFX>JavaFX Tips
FXMLファイルをロードが完了した時、そのタイミングで対応するコントローラのメソッドを起動できると何かと便利です。
以下のソースのように、コントローラクラスで Initializable インターフェースを実装すると、 FXMLのロードが完了し、fx:id が指定されたノードで id と同名のフィールドが初期化された後、 initializeメソッドが呼ばれるようになります。
public class Controller implements Initializable { // ノードを格納するフィールド public WebView webview; public Label stateLabel; private WebEngine engine; // イベントハンドラ public void load(ActionEvent actionEvent) { engine.load("http://www.asahi.com"); }
// 初期化メソッド @Override public void initialize(URL location, ResourceBundle resources) { 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()); } } ); } }