我正在尝试从TextInputControl调用requestFocus方法。没有成功。
我想在打开新的Tab时将焦点放在TextInputControl上。我正在这样做:
tab.setContent(anchor);
tabPane.getTabs().add(tab);
SingleSelectionModel<Tab> selectionModel = tabPane.getSelectionModel();
selectionModel.select(tab);
focusTopLeftInputArea(anchor);
和focusTopLeftInputArea找到一个TextInputControl“ ti”并调用ti.requestFocus()。
focusTopLeftInputArea可以很好地找到TextInputControl,但该控件未获得焦点。
最佳答案
从节点的requestFocus方法的JavaFX Api文档中:
为了有资格获得焦点,该节点必须是场景的一部分,
它及其所有祖先必须可见,并且一定不能
禁用的。
那么,您究竟从哪里调用此代码?确保调用requestFocus的时间,控件已经是场景/舞台的一部分,并且调用已在JavaFX Application线程中完成(可以通过Platform.runLater()
进行调用来确保)。