У меня есть простой фреймворк с JTextField и JPasswordField. Когда мой кадр загружает текст JTextField, это «Укажите свой логин». Я хочу удалить этот текст, когда JTextField получает фокус. Это первый элемент в моем фрейме, поэтому он уже имеет фокус при загрузке фрейма, но я хочу, чтобы он очищался всякий раз, когда я нажимаю на него или начинаю вводить его. Я попробовал MouseListener, который отлично работает, но теперь я хочу очистить JTextField с момента ввода текста. Это код, включая мою проблему:Текст JTextField должен очищаться, когда я начинаю вводить его
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);
}
}
+1 Да, создать вспомогательный класс для управления именно эта вещь – MadProgrammer