PopOver中的TextField有奇怪的行为

时间:2016-10-21 23:25:14

标签: javafx textfield popover controlsfx

我有一个带有奇怪行为的TextField的PopOver,这个PopOver由其他TextField拥有,因为当我输入单词'Fernández'时,所有键都由内部TextField处理,除非我输入类似强调的元音它是由外部TextField收集的“á”。

PopOver owned by TextField

但是,当我显示由按钮拥有的相同PopOver工作正常并且内部TextField收到字母'á'

PopOver owned by Button

我很感激有任何帮助来解决它。

编辑:在这里你可以看到一个示例代码来显示这个。

公共类PopOverTest扩展了Application {

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

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

更改外部Textfield EventDispatcher并解决问题

EventDispatcher dispatcher = externalTextField.getEventDispatcher();

然后关注内部TextField

externalTextField.setEventDispatcher(interntalTextField.getEventDispatcher());

当失去焦点时恢复EventDispatcher

externalTextField.setEventDispatcher(dispatcher);

那是所有人!