按Enter键时,我想使用FXML通过事件发送消息:
textFieldInput.setOnKeyPressed(keyEvent -> {
try {
if (keyEvent.getCode() == KeyCode.ENTER) {
String text = textFieldInput.getText();
send(text);
}
} catch (Exception exception) {
textFieldInput.setText("message not sent! -something went wrong... \n");
}
});
发送功能:
public void send(String message) {
try {
output.println(ClientController.USERNAME + ": " + message);
output.flush();
textFieldInput.clear();
} catch (Exception exception) {
output.println("message not sent! -something went wrong... \n");
}
}
我的问题是,在我发送消息后,程序会添加另一个“击键”,这样我的返回键再次被击中并向textField区域添加一个新行。我不明白为什么以及在哪里?
答案 0 :(得分:0)
使用KeyEvent阻止使用以下代码输入密钥。
textFieldInput.setOnKeyPressed(event -> {
if (event.isControlDown()) {
KeyEvent newEvent= new KeyEvent(null, null, null, null, false, false, false, false);
textFieldInput.fireEvent(newEvent);
}
event.consume();
if (event.getCode() == KeyCode.ENTER) {
send(textFieldInput.getText());
}
});