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