Слушатель события на InputMethodTextChanged теряет предварительно зафиксированную строку - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь подключиться к поддержке IME на JavaFX TextField (я использую Windows 7), либо установив метод контроллера в SceneBuilder, либо установив его в коде:

 firstNameField.setOnInputMethodTextChanged(System.out::println);

Если я ввожу японский в текстовое поле, активируется обработчик событий, и вывод выводится на консоль (например, предварительно составленная строка). Проблема в том, что в текстовом поле больше нет вывода.

Как я могу получить информацию только из события, не меняя поведения текстового поля? Это должно быть оставлено как есть (например, подчеркивание различных частей слова и т. Д. - я знаю, что это действительно трудно сделать, поэтому я хочу установить значение по умолчанию и не пытаться «снова установить текст» на узле вручную) .

Приведенный ниже пример отлично работает с вводом на английском языке, но не печатает ничего в текстовом поле при использовании японского языка.

public class ImeDemonstration extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {

        var textField = new TextField();

        textField.setOnInputMethodTextChanged(System.out::println);

        var root = new StackPane();
        root.getChildren().add(textField);


        Scene scene = new Scene(root, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();

    }
}

Я относительно новичок в JavaFX, так что, возможно, есть способ, чтобы событие продолжалось?

Спасибо!

...