当使用keylistener发送消息时“输入”为什么我会获得额外的换行符?

时间:2017-04-06 19:17:45

标签: java javafx fxml

github link

按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区域添加一个新行。我不明白为什么以及在哪里?

1 个答案:

答案 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());
        }

    });