2012-11-12 25 views
4

我有一个单独的窗口JavaFX应用程序,从一个JavaFX教程创建。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文件TextField的一个是默认激活。这个怎么做?我试图在控制器的初始化方法中调用requestFocus方法,但它不起作用。我还没有在AnchorPane类(AnchorPane是fxml控件树的根元素)中的TextField类中找到任何合适的属性。

回答

9

尝试用

Platform.runLater(new Runnable() { 
    public void run() { 
     textField.requestFocus(); 
    } 
}); 
包裹你的 requestFocus()通话