2

I have a JDialog that contains many rows of textfields and a submit button. I would like to know if it's possible to add an eventListener to the container to trigger the submit button.

kaizen
  • 1,580
  • 4
  • 26
  • 50
  • 1
    Looks like a palce for KeyBinding's usage – StanislavL Apr 29 '15 at 09:42
  • can you explain your question in more detail so that I can understand better what you actually want to do – Luffy Apr 29 '15 at 09:55
  • For better help sooner, please add a [mcve](http://stackoverflow.com/help/mcve) that illustrates the issue you have. Furthermore, it is difficult to tell what exactly you want to do; it may even be that listening to key presses might not be the right approach. – kiheru Apr 29 '15 at 09:56

2 Answers2

2

One convenient way to bind Enter to an Action is via the root pane's setDefaultButton() method. You can also use the Action in a key binding, as shown here.

JDialog d = new JDialog(…);
Action submit = new AbstractAction("Submit") {

    @Override
    public void actionPerformed(ActionEvent e) {
        // handle submit
    }
};
private JButton b = new JButton(submit);
…
d.getRootPane().setDefaultButton(b);
Community
  • 1
  • 1
trashgod
  • 203,806
  • 29
  • 246
  • 1,045
1

Try adding

frame.getRootPane().setDefaultButton(button);
    // removing the binding for pressed
    frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
        .put(KeyStroke.getKeyStroke("ENTER"), "none");
    // retarget the binding for released
    frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
        .put(KeyStroke.getKeyStroke("released ENTER"), "press");

Or else do something like the following

 addKeyListener(new KeyListener(){  
       @Override
       public void keyPressed(KeyEvent ke)
       {
       if (e.getKeyCode().equals(KeyEvent.VK_ENTER))
         { 
      //copy paste the logic you wrote inside the ActionPerformed method
         }
      }});

      setFocusable(true);//Setting Focus true for ur container

      requestFocusInWindow();//Requesting the focus. Without this, KeyEvent will not trigger on your container
Lalit Rao
  • 551
  • 5
  • 22