【问题标题】:JavaFx KeyEvent on Rectangle doesn't work矩形上的 JavaFx KeyEvent 不起作用
【发布时间】:2019-09-23 07:08:18
【问题描述】:

我在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);

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

【问题讨论】:

    标签: java events javafx keyevent


    【解决方案1】:

    问题在于 Rectangle 没有焦点,并且 KeyEvents 不会在没有焦点的节点上触发。您可以通过调用rectangle.requestFocus() 来请求焦点。 似乎只需单击它就不会获得焦点,因此您必须“手动”给它。 如果你不想点击,你可以决定什么时候让 Rectangle 成为焦点,在它获得焦点之后,它也会触发 keyEvents。

    我提到的 onClick 应该是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-06
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多