Detect enter press in JTextField

前端 未结 10 1620
说谎
说谎 2020-11-29 03:06

Is it possible to detect when someone presses Enter while typing in a JTextField in java? Without having to create a button and set it as the default.

相关标签:
10条回答
  • 2020-11-29 03:32

    Do you want to do something like this ?

    JTextField mTextField = new JTextField();
        mTextField.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode() == KeyEvent.VK_ENTER){
                    // something like...
                   //mTextField.getText();
                   // or...
                   //mButton.doClick();
                }
            }
    
        });
    
    0 讨论(0)
  • 2020-11-29 03:33

    A JTextField was designed to use an ActionListener just like a JButton is. See the addActionListener() method of JTextField.

    For example:

    Action action = new AbstractAction()
    {
        @Override
        public void actionPerformed(ActionEvent e)
        {
            System.out.println("some action");
        }
    };
    
    JTextField textField = new JTextField(10);
    textField.addActionListener( action );
    

    Now the event is fired when the Enter key is used.

    Also, an added benefit is that you can share the listener with a button even if you don't want to make the button a default button.

    JButton button = new JButton("Do Something");
    button.addActionListener( action );
    

    Note, this example uses an Action, which implements ActionListener because Action is a newer API with addition features. For example you could disable the Action which would disable the event for both the text field and the button.

    0 讨论(0)
  • 2020-11-29 03:38

    For each text field in your frame, invoke the addKeyListener method. Then implement and override the keyPressed method, as others have indicated. Now you can press enter from any field in your frame to activate your action.

    @Override
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode() == KeyEvent.VK_ENTER){
                    //perform action
                }
            }
    
    0 讨论(0)
  • 2020-11-29 03:39
    JTextField function=new JTextField(8);   
    function.addActionListener(new ActionListener(){
    
                    public void actionPerformed(ActionEvent e){
    
                            //statements!!!
    
                    }});
    

    all you need to do is addActionListener to the JTextField like above! After you press Enter the action will performed what you want at the statement!

    0 讨论(0)
  • 2020-11-29 03:39

    If you want to set a default button action in a JTextField enter, you have to do this:

    //put this after initComponents();
    
    textField.addActionListener(button.getActionListeners()[0]);
    

    It is [0] because a button can has a lot of actions, but normally just has one (ActionPerformed).

    0 讨论(0)
  • 2020-11-29 03:42

    The other answers (including the accepted ones) are good, but if you already use Java8, you can do the following (in a shorter, newer way):

    textField.addActionListener(
        ae -> {
            //dostuff
        }
    );
    

    As the accepted answer told, you can simply react with an ActionListener, which catches the Enter-Key.

    However, my approach takes benefit of the functional concepts which was introduced in Java 8.

    If you want to use the same action for example for a button and the JTextField, you can do the following:

    ActionListener l = ae -> {
        //do stuff
    }
    
    button.addActionListener(l);
    textField.addActionListener(l);
    

    If further explaination is needed, please let me know!

    0 讨论(0)
提交回复
热议问题