Reputation: 79
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
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
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
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