Java tutorial
import java.awt.BorderLayout; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Main { public static void main(String[] a) { final JTextField textField = new JTextField(5); textField.addFocusListener(new FocusListener() { public void focusGained(FocusEvent e) { } public void focusLost(FocusEvent e) { if (!e.isTemporary()) { String content = textField.getText(); if (!content.equals("a")) { System.out.println("illegal value! " + content); SwingUtilities.invokeLater(new FocusGrabber(textField)); } } } }); JFrame frame = new JFrame(); frame.add(textField, BorderLayout.CENTER); frame.setSize(300, 300); frame.setVisible(true); } } class FocusGrabber implements Runnable { private JComponent component; public FocusGrabber(JComponent component) { this.component = component; } public void run() { component.grabFocus(); } }