Say Off
Say Off

Reputation: 79

How to perform action on JButton upon Enter on JTextField?

I have a JTextField and a JButton, when user hits enter on the JTextField then action has to be performed on the corresponding JButton. Here is my code snippet.

Also i want to disable the JButton on enter and enable it later when something is changed in the JTextField

JButton jb=new JButton("Print");
JTextField jt=new JTextField(20);
jb.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent ae)
   {
     System.out.println(jt.getText());
   }
});

Upvotes: 2

Views: 2120

Answers (3)

JavaTechnical
JavaTechnical

Reputation: 9347

Here is a modification of your code, i registered a DocumentListener to listen for text changes in JTextField and also added ActionListener to JTextField

    jb=new JButton("Print");
    jt=new JTextField(20);

    jt.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae)
        {
            jb.doClick();
        }
    });

    jt.getDocument().addDocumentListener(new DocumentListener(){
        public void insertUpdate(DocumentEvent de)
        {
            jb.setEnabled(true);
        }
        public void changedUpdate(DocumentEvent de)
        {
            jb.setEnabled(true);
        }
        public void removeUpdate(DocumentEvent de)
        {
            jb.setEnabled(true);
        }
    });

    jb.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae)
        {
            System.out.println(jt.getText());
            jb.setEnabled(false);
        }
    });

Upvotes: 3

Ashish Aggarwal
Ashish Aggarwal

Reputation: 3026

To perform same action on button click and enter press on Jfield.

JButton jb = new JButton("Print");
JTextField jt = new JTextField(20);
ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        System.out.println(jt.getText());
        // Diable Button after action performed.
        jb.setEnabled(false);
    }
}; 
jb.addActionListener(listener);
jt.addActionListener(listener);

// Enable Button after any change in JtextField value. JTextField value change Listener refered from Link

jt.getDocument().addDocumentListener(new DocumentListener(){
        public void insertUpdate(DocumentEvent de)
        {
            jb.setEnabled(true);
        }
        public void changedUpdate(DocumentEvent de)
        {
            jb.setEnabled(true);
        }
        public void removeUpdate(DocumentEvent de)
        {
            jb.setEnabled(true);
        }
    });

Upvotes: 2

JB Nizet
JB Nizet

Reputation: 691635

Add the same action listener to the button and the text field:

JButton jb = new JButton("Print");
JTextField jt = new JTextField(20);
ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        System.out.println(jt.getText());
    }
}; 
jb.addActionListener(listener);
jt.addActionListener(listener);

Upvotes: 6

Related Questions