矩形上的 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());
我在 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());