有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

焦点JavaFX FXML上的javakeyevent

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

当文本字段具有焦点时按下enter键时,如何添加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();
    }
}

共 (1) 个答案

  1. # 1 楼答案

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

    ...
    <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
    }
    ...