0

I have a PopOver with a TextField with a strange behavior, this PopOver it's owned by other TextField because when I type the word 'Fernández' all keys are processed by the internal TextField except when I type a stressed vowel like 'á' that it's collected by the external TextField.

PopOver owned by TextField

But when i show the same PopOver owned by a button works fine and the internal TextField receives the letter 'á'

PopOver owned by Button

I would appreciate any help to solve it.

EDIT: Here you can see an example code to show this.

public class PopOverTest extends 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);
   }
}
axiorema
  • 165
  • 1
  • 2
  • 9

1 Answers1

0

I found a solution for this.

Changing the external Textfield EventDispatcher and the problem is resolved

EventDispatcher dispatcher = externalTextField.getEventDispatcher();

then on focus of the internal TextField

externalTextField.setEventDispatcher(interntalTextField.getEventDispatcher());

and when lost focus restore the EventDispatcher

externalTextField.setEventDispatcher(dispatcher);

That's all folks!

axiorema
  • 165
  • 1
  • 2
  • 9