2

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());
   }
});
Say Off
  • 79
  • 1
  • 1
  • 8

3 Answers3

6

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);
JB Nizet
  • 678,734
  • 91
  • 1,224
  • 1,255
3

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);
        }
    });
Say Off
  • 79
  • 1
  • 1
  • 8
JavaTechnical
  • 8,846
  • 8
  • 61
  • 97
2

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);
        }
    });
Community
  • 1
  • 1
Ashish Aggarwal
  • 3,018
  • 2
  • 23
  • 46