Question

TextField f = new TextField();
Button b = new Button("Save");
b.setClickShortcut(KeyCode.ENTER); // For quick saving from text field itself

TextArea longText = new TextArea(); // "Enter" is garbled here

Hot to make the shortcut to work only in the from text field?

Was it helpful?

Solution

Use focus and blur listeners to remove and add the shortcut key:

    f.addFocusListener(new FocusListener() {
        @Override
        public void focus(FocusEvent event) {
            b.setClickShortcut(KeyCode.ENTER);
        }
    });
    f.addBlurListener(new BlurListener() {
        @Override
        public void blur(BlurEvent event) {
            b.removeClickShortcut();
        }
    });

OTHER TIPS

Newer versions of Vaadin require the following code as addListener() is deprecated now.

    f.addFocusListener(new FocusListener() {

        private static final long serialVersionUID = -6733373447805994139L;

        @Override
        public void focus(FocusEvent event) {
            b.setClickShortcut(KeyCode.ENTER);
        }
    });

    f.addBlurListener(new BlurListener() {

        private static final long serialVersionUID = -3673311830300629513L;

        @Override
        public void blur(BlurEvent event) {
            b.removeClickShortcut();
        }
    });

Talking in terms of Vaadin 14, I was looking for the answer and for me, this worked well

  Button search = new Button("Search");
  search.addClickShortcut(Key.ENTER);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top