I have a simple login frame with a JTextField and a JPasswordField. When my frame loads the text of the JTextField is "Typ your login". I want to erase that text when the JTextField gets focus. It's the first element in my frame so it already has focus when I load the frame, but I want it to clear whenever I click on it or start typing in it. I tried a MouseListener, which works fine, but now I'd like to clear the JTextField from the moment I start typing. This is the code involving my problem:
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JFrame;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class TextFields extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField login;
private JPasswordField password;
public TextFields() {
super("Event handling");
setLayout(new FlowLayout());
login = new JTextField("Type your login", 20);
password = new JPasswordField(20);
add(login);
add(password);
LoginHandler handler = new LoginHandler();
login.addMouseListener(handler);
}
private class LoginHandler implements ActionListener, MouseListener {
public void mouseClicked(MouseEvent e) {
login.setText("");
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusLost(FocusEvent arg0) {
// TODO Auto-generated method stub
}
}
public static void main(String[] args) {
TextFields test = new TextFields();
test.setDefaultCloseOperation(EXIT_ON_CLOSE);
test.setSize(250, 100);
test.setVisible(true);
}
}