Я пытаюсь подключиться к поддержке 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, так что, возможно, есть способ, чтобы событие продолжалось?
Спасибо!