【问题标题】:TextField in PopOver with strange behaviorPopOver 中的 TextField 具有奇怪的行为
【发布时间】:2016-10-21 23:25:13
【问题描述】:

我有一个带有奇怪行为的 TextField 的 PopOver,这个 PopOver 它归其他 TextField 所有,因为当我键入单词 'Fernández' 时,所有键都由内部 TextField 处理,除非我键入像 '@ 这样的重音元音987654324@' 表示它是由外部 TextField 收集的。

PopOver owned by TextField

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

PopOver owned by Button

如果能帮我解决这个问题,我将不胜感激。

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

公共类 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);
   }
}

【问题讨论】:

    标签: javafx textfield popover controlsfx


    【解决方案1】:

    我找到了解决办法。

    更改外部Textfield EventDispatcher,问题解决

    EventDispatcher dispatcher = externalTextField.getEventDispatcher();
    

    然后在内部 TextField 的焦点上

    externalTextField.setEventDispatcher(interntalTextField.getEventDispatcher());
    

    当失去焦点时恢复 EventDispatcher

    externalTextField.setEventDispatcher(dispatcher);
    

    就是这样!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多