如何在 JavaFX 中处理节点焦点

How to handle Node focus in JavaFX

Node 获得焦点时,在 JavaFX 中调用什么 Event

我有 TextField,可以通过鼠标 (setOnMouseClicked) 或其他 Node 的 TAB 键来聚焦(我的问题来了)。

如何处理第二种可能的焦点?有没有办法同时处理这两个问题?

您可以收听 focused property:

TextField tf = new TextField();
TextField tf2 = new TextField();

tf.focusedProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue) {
        System.out.println("Node 1: Mine!");
    }
});
tf2.focusedProperty().addListener((observable, oldValue, newValue) -> {
    if (newValue) {
         System.out.println("Node 2: Mine!");
    }
});

Scene scene = new Scene(new VBox(tf, tf2), 300, 250);

如果你改变焦点,你可以观察到2 TextField "arguing who's got the focus"。