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);

这就是所有的人!