我试图从TextInputControl调用requestFocus方法。没有成功。 我想在打开一个新Tab时将焦点设置在TextInputControl上。我这样做:
tab.setContent(anchor);
tabPane.getTabs().add(tab);
SingleSelectionModel<Tab> selectionModel = tabPane.getSelectionModel();
selectionModel.select(tab);
focusTopLeftInputArea(anchor);
和focusTopLeftInputArea找到一个TextInputControl&#34; ti&#34;并调用ti.requestFocus()。
focusTopLeftInputArea可以很好地找到TextInputControl,但控件没有聚焦。
答案 0 :(得分:1)
来自Node的requestFocus方法的JavaFX Api文档:
要有资格获得焦点,节点必须是场景的一部分, 它和它的所有祖先必须是可见的,而且绝对不可能 禁用。
那么你究竟在哪里调用这段代码呢?确保调用requestFocus的时间,您的控件已经是场景/阶段的一部分,并且调用是在JavaFX Application线程中完成的(这可以通过Platform.runLater()
调用来确保。)