InputMethodTextChanged上的事件侦听器丢失了预先提交的字符串

时间:2019-07-06 19:59:24

标签: javafx ime

我试图通过在SceneBuilder中设置控制器方法或在代码中设置它来吸引JavaFX TextField(我正在使用Windows 7)上的IME支持。

 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比较陌生,所以也许有办法让事件“继续”吗?

谢谢!

0 个答案:

没有答案