【发布时间】:2014-01-02 20:19:46
【问题描述】:
我想将焦点设置到选项卡内容中的特定节点。我向 selectedItem 属性添加了一个 ChangeListener,如下所示(假设该类包含一个名为 secondNode 的字段,类型为 Node ):
tabPane.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Tab>() {
@Override
public void changed(ObservableValue<? extends Tab> observable, Tab oldValue, Tab newValue) {
if (newValue != null) {
Platform.runLater(new Runnable() {
@Override
public void run() {
secondNode.requestFocus();
}
});
}
}
});
但是,这不起作用。我认为原因是因为 TabPane 在选择新选项卡后执行了一些影响焦点的附加操作(但是,通过 TabPane source code,我不知道是什么)。如果我在调试器中单步执行此代码,它会按预期工作,因此它似乎是一个竞争条件。如果是这样,如何解决?
【问题讨论】: