beck
beck

Reputation: 3027

keyboard focus issue in textfield (Codenameone)

I have a textfield in dialog box. When I try to type smth in it, it just goes out. What just happened here. I have captured the video. please have a look. https://youtu.be/HhwoPWJDG1M

Code:

super(new BoxLayout(BoxLayout.Y_AXIS));
setScrollableY(false);
Container mainContainer = new Container(new BorderLayout(BorderLayout.CENTER_BEHAVIOR_CENTER));
add(mainContainer);
Label logo = new Label();
mainContainer.addComponent(BorderLayout.NORTH, logo);
Button forgotPassword = new Button("FORGOT PASSWORD");
- - - - - - - - - - - -
//r components added to main form
- - - - - - - - - - - -
Container centerContainer = BoxLayout.encloseY(userNameField, passwordSection, forgotPassword);
mainContainer.add(BorderLayout.CENTER, centerContainer);


TableLayout tl = new TableLayout(1, 2);
Container passwordSection = new Container(tl);
passwordSection.add(tl.createConstraint().
    widthPercentage(80),passwordField).
    add(tl.createConstraint().verticalAlign(Component.CENTER).widthPercentage(19), sendButton);

**//this is the dialog box where problem exists**
forgotPassword.addActionListener(e -> {
    Dialog d = new Dialog();
    TextField emailTextField = new TextField();
    emailTextField.setHint("Enter your email here");
    d.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
    d.add(emailTextField);
    Button submit = new Button("Submit");
    d.add(submit);
    d.showPopupDialog(logo);
});

Upvotes: 1

Views: 63

Answers (1)

Diamond
Diamond

Reputation: 7483

The problem comes from using showPopup() Dialog and not keeping it from autoDisposing. Use one of showPacked() or showStretched() and define its position, then set the dialog autoDispose() to false:

d.setAutoDispose(false); //reason dialog is disposing quickly
d.setDisposeWhenPointerOutOfBounds(true);
d.showPacked(BorderLayout.NORTH, true);

Upvotes: 1

Related Questions