Вывод текста из textArea в JavaFX

353
08 февраля 2018, 16:35

Пытаюсь написать метод вывода текста из одной textArea в другую (окно чата) по нажатию на кнопку Enter.

    public void textAction(KeyEvent e){
            if(e.getCode().equals(KeyCode.ENTER)) {    
              if (!textField.getText().equals("")) {
                    textArea.appendText(textField.getText() + "\n");
                    mediaPlayer.play();
                    textField.clear();
                    textField.requestFocus();
                }
            }
   }

Проблема в том, что после такого ввода происходит переброс коретки в поле ввода на новую строку, не понимаю, как от этого избавиться?

Answer 1

Единственное что подошло под ваше описание, это использование в роли поля с именем textField поля типа TextArea (если это так и есть, обращайте на это больше внимания в дальнейшем). Используйте event.consume():

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.*;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        final TextArea textArea = new TextArea();
        //final TextField textField = new TextField();
        final TextArea textField = new TextArea();
        textField.setOnKeyPressed(event -> {
            if(event.getCode().equals(KeyCode.ENTER)) {
                String text = textField.getText().trim();
                if ( !text.isEmpty() ) {
                    textArea.appendText(text);
                    textArea.appendText(System.lineSeparator());
                    //mediaPlayer.play();
                    textField.clear();
                    //textField.requestFocus();
                }
                event.consume();
            }
        });
        primaryStage.setScene(new Scene(new VBox(textArea, textField), 300, 300));
        primaryStage.show();
    }
}
READ ALSO
запись soundpool

запись soundpool

В моём приложении на android я использую воспроизведение 12-ти звуков с помощью класса soundpool,теперь у меня возник вопрос,есть ли какой нибудь метод...

170
Обработка входящего параметра в Jasperreports

Обработка входящего параметра в Jasperreports

В сложном отчете, в котором существует два разных запроса для основного отчета и вложенной таблицы требуются два входящих параметра из Java кодаНо...

278
как экранировать текст полученный с CKEditor

как экранировать текст полученный с CKEditor

как можно экранировать данные полученные с ckeditor, затем передать через json Js:

221
Не отслеживается изменение input

Не отслеживается изменение input

Имеется следующий код:

275