Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
矩形上的JavaFx KeyEvent不';行不通_Java_Events_Javafx_Keyevent - Fatal编程技术网

矩形上的JavaFx KeyEvent不';行不通

矩形上的JavaFx KeyEvent不';行不通,java,events,javafx,keyevent,Java,Events,Javafx,Keyevent,我在网格窗格上有一个矩形,在添加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.setOnK

我在
网格窗格上有一个
矩形
,在添加
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()
来请求焦点。 简单点击它似乎无法获得焦点,所以你必须“手动”给它。 如果你不想点击,你可以决定什么时候让矩形成为焦点,在它获得焦点后,它也会触发keyEvents

我提到的onClick如下所示:


rectangle.setOnMouseClicked(事件->rectangle.requestFocus())

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

我提到的onClick如下所示:

rectangle.setOnMouseClicked(事件->rectangle.requestFocus())