PopOver 中的 TextField 具有奇怪的行为
TextField in PopOver with strange behavior
我有一个带有 TextField 的 PopOver,它的行为很奇怪,这个 PopOver 归其他 TextField 所有,因为当我输入单词 'Fernández'
时,所有键都由内部 TextField 处理,除非我输入有压力的由外部 TextField 收集的元音,例如“á
”。
PopOver owned by TextField
但是当我显示按钮拥有的相同 PopOver 时工作正常并且内部 TextField 收到字母 'á'
PopOver owned by Button
如果能帮我解决这个问题,我将不胜感激。
编辑:在这里您可以看到一个示例代码来说明这一点。
public class PopOverTest 扩展应用程序 {
@Override
public void start(Stage primaryStage) {
CustomTextField externo = new CustomTextField();
ImageView imgView = new ImageView(new Image("test/image.png"));
externo.setLeft(imgView);
CustomTextField interno = new CustomTextField();
PopOver popOver = new PopOver();
popOver.setContentNode(interno);
popOver.stArrowLocation(PopOver.ArrowLocation.TOP_LEFT);
imgView.setOnMouseClicked(e -> {
popOver.show(imgView);
});
StackPane root = new StackPane();
root.getChildren().add(externo);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
我找到了解决方案。
更改外部 Textfield EventDispatcher 问题已解决
EventDispatcher dispatcher = externalTextField.getEventDispatcher();
然后关注内部 TextField
externalTextField.setEventDispatcher(interntalTextField.getEventDispatcher());
并且在失去焦点时恢复 EventDispatcher
externalTextField.setEventDispatcher(dispatcher);
这就是所有的人!
我有一个带有 TextField 的 PopOver,它的行为很奇怪,这个 PopOver 归其他 TextField 所有,因为当我输入单词 'Fernández'
时,所有键都由内部 TextField 处理,除非我输入有压力的由外部 TextField 收集的元音,例如“á
”。
PopOver owned by TextField
但是当我显示按钮拥有的相同 PopOver 时工作正常并且内部 TextField 收到字母 'á'
PopOver owned by Button
如果能帮我解决这个问题,我将不胜感激。
编辑:在这里您可以看到一个示例代码来说明这一点。
public class PopOverTest 扩展应用程序 {
@Override
public void start(Stage primaryStage) {
CustomTextField externo = new CustomTextField();
ImageView imgView = new ImageView(new Image("test/image.png"));
externo.setLeft(imgView);
CustomTextField interno = new CustomTextField();
PopOver popOver = new PopOver();
popOver.setContentNode(interno);
popOver.stArrowLocation(PopOver.ArrowLocation.TOP_LEFT);
imgView.setOnMouseClicked(e -> {
popOver.show(imgView);
});
StackPane root = new StackPane();
root.getChildren().add(externo);
Scene scene = new Scene(root, 300, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
我找到了解决方案。
更改外部 Textfield EventDispatcher 问题已解决
EventDispatcher dispatcher = externalTextField.getEventDispatcher();
然后关注内部 TextField
externalTextField.setEventDispatcher(interntalTextField.getEventDispatcher());
并且在失去焦点时恢复 EventDispatcher
externalTextField.setEventDispatcher(dispatcher);
这就是所有的人!