5

JavaFXチュートリアルの1つから作成された単一ウィンドウのJavaFXアプリケーションがあります。

次の関数で新しいウィンドウのコンテンツを設定しています:

private Initializable replaceSceneContent(final String fxml) throws Exception {

    // wczytanie fxml
    FXMLLoader loader = new FXMLLoader();
    InputStream in = Main.class.getResourceAsStream(fxml);
    loader.setBuilderFactory(new JavaFXBuilderFactory());
    loader.setLocation(Main.class.getResource(fxml));
    AnchorPane page;
    try {
        page = (AnchorPane) loader.load(in);
    } finally {
        in.close();
    }

    Scene scene = new Scene(page, w, h);
    stage.setScene(scene);
    return (Initializable) loader.getController();
}

しかし、この fxml ファイルから TextFields の 1 つを選択して、デフォルトでアクティブにしたいと考えています。これを行う方法?コントローラーの初期化メソッドで requestFocus メソッドを呼び出そうとしましたが、機能しませんでした。TextField クラスにも AnchorPane クラスにも適切なプロパティが見つかりませんでした (AnchorPane は fxml コントロール ツリーのルート要素です)。

4

1 に答える 1

10

requestFocus()呼び出しをラップしてみてくださいPlatForm.runlater

Platform.runLater(new Runnable() {
    public void run() {
        textField.requestFocus();
    }
});
于 2012-11-12T21:47:09.033 に答える