矩形上的 JavaFx KeyEvent 不起作用

JavaFx KeyEvent on Rectangle doesn't work

我在 GridPane 上有一个 Rectangle,在添加 KeyEvent 之后,它没有触发。 这是我的代码:

    Rectangle rectangle = new Rectangle();
    rectangle.setX(500.0f); 
    rectangle.setY(200.0f); 
    rectangle.setWidth(400.0f); 
    rectangle.setHeight(300.0f); 

    //add key event
    rectangle.setOnKeyTyped(event->{
       System.out.println("TYPED - Character: "+event.getCharacter()+
    ", Code: " + event.getCode() +
     ", Text: " +event.getText());
   });

    GridPane.setRowIndex(rectangle, 0);
    GridPane.setColumnIndex(rectangle, 0);
    gridPane.getChildren().add(rectangle);

按任意键不打印任何内容。我的代码可能有什么问题?

问题是矩形没有焦点,KeyEvents 没有在没有焦点的节点上触发。您可以通过调用 rectangle.requestFocus() 请求焦点。 似乎只需单击它就不会获得焦点,因此您必须给它 "manually"。 如果你不想点击,你可以决定什么时候让 Rectangle 获得焦点,当它获得焦点后,它也会触发 keyEvents。

我提到的 onClick 看起来像这样:

rectangle.setOnMouseClicked(event -> rectangle.requestFocus());