+ public class DeferredTextInputListener implements DocumentListener
+ {
+ private final Timer swingTimer;
+
+ public DeferredTextInputListener(int timeOut, ActionListener listener,
+ boolean repeats)
+ {
+ swingTimer = new Timer(timeOut, listener);
+ swingTimer.setRepeats(repeats);
+ }
+
+ public void start()
+ {
+ swingTimer.start();
+ }
+
+ public void stop()
+ {
+ swingTimer.stop();
+ }
+
+ @Override
+ public void insertUpdate(DocumentEvent e)
+ {
+ swingTimer.restart();
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e)
+ {
+ swingTimer.restart();
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e)
+ {
+ swingTimer.restart();
+ }
+
+ }
+