java - 焦点 JavaFX FXML 上的 KeyEvent

标签 java javafx javafx-2 javafx-8 fxml

我目前正在开发一个即时消息程序,并已创建一个文本供用户在 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();
    }
}

最佳答案

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

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

在 Controller 中,声明一个方法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
}
...

关于java - 焦点 JavaFX FXML 上的 KeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30167726/

相关文章:

java - JComponent 不绘制到 JPanel

java - 在半索引实例处查找并替换

java - 如何构建可执行 jar 以将字符串返回给 shell 脚本

JavaFX:TableView,需要标题样式

java - RMI JavaFX 2 - NotSerializableException 错误

java - 使用jeeunit时如何在每次测试后重置数据库?

java - 使用来自 Google API 的数据在文本字段中自动建议

Java ChoiceDialog 更改默认按钮顺序

java - JavaFX 不支持 MP4?

java - 在 JavaFX SimpleObjectProperty 中禁止 null(或返回默认值)