我正在尝试从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()进行调用来确保)。

07-25 23:46
查看更多