KeyEvent on focus JavaFX FXML

KeyEvent on focus JavaFX FXML

我目前正在开发一个即时消息程序,并创建了一个文本供用户在 FXML 中输入消息。

如何添加 KeyEvent 以便在文本字段具有焦点时按下回车键。

更新 - 已尝试,但无效

<TextArea fx:id="area_chatInput"
       editable="true"
       prefHeight="60"
       prefWidth="300"
       wrapText="true"
       promptText="Enter Message />


@FXML
private void keyListener(KeyEvent event){
    if(event.getCode() == KeyCode.ENTER){
        System.out.println("enter pressed");
        sendMsg();
        event.consume();
    }
}

您可以将 onKeyPressed 事件侦听器添加到 fxml 中的 TextField

...
<TextField fx:id="chatText" layoutX="199.0" layoutY="174.0" onKeyPressed="#keyListener" />
...

在控制器中,声明一个方法keyListener

public void keyListener(KeyEvent event){
    if(event.getCode() == KeyCode.ENTER) {
          // Do stuff
          ((TextField)event.getSource()).clear(); // clear textfield
          System.out.println("Enter Pressed"); // print a message
     }
}

更新 - 根据评论

要避免光标进入下一行,您需要在事件离开方法之前消耗事件。

...
if (event.getCode() == KeyCode.ENTER) {
     ...
     event.consume(); // Consume Event
}
...