我试图通过在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比较陌生,所以也许有办法让事件“继续”吗?
谢谢!