| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
 | 
 | 
package javax.swing;  | 
 | 
 | 
 | 
import java.util.*;  | 
 | 
 | 
 | 
/**  | 
 | 
 * The purpose of this class is to help clients support smooth focus  | 
 | 
 * navigation through GUIs with text fields. Such GUIs often need  | 
 | 
 * to ensure that the text entered by the user is valid (for example,  | 
 | 
 * that it's in  | 
 | 
 * the proper format) before allowing the user to navigate out of  | 
 | 
 * the text field. To do this, clients create a subclass of  | 
 | 
 * <code>InputVerifier</code> and, using <code>JComponent</code>'s  | 
 | 
 * <code>setInputVerifier</code> method,  | 
 | 
 * attach an instance of their subclass to the <code>JComponent</code> whose input they  | 
 | 
 * want to validate. Before focus is transfered to another Swing component  | 
 | 
 * that requests it, the input verifier's <code>shouldYieldFocus</code> method is  | 
 | 
 * called.  Focus is transfered only if that method returns <code>true</code>.  | 
 | 
 * <p>  | 
 | 
 * The following example has two text fields, with the first one expecting  | 
 | 
 * the string "pass" to be entered by the user. If that string is entered in  | 
 | 
 * the first text field, then the user can advance to the second text field  | 
 | 
 * either by clicking in it or by pressing TAB. However, if another string  | 
 | 
 * is entered in the first text field, then the user will be unable to  | 
 | 
 * transfer focus to the second text field.  | 
 | 
 *  | 
 | 
 * <pre>  | 
 | 
 * import java.awt.*;  | 
 | 
 * import java.util.*;  | 
 | 
 * import java.awt.event.*;  | 
 | 
 * import javax.swing.*;  | 
 | 
 *  | 
 | 
 * // This program demonstrates the use of the Swing InputVerifier class.  | 
 | 
 * // It creates two text fields; the first of the text fields expects the  | 
 | 
 * // string "pass" as input, and will allow focus to advance out of it  | 
 | 
 * // only after that string is typed in by the user.  | 
 | 
 *  | 
 | 
 * public class VerifierTest extends JFrame { | 
 | 
 *     public VerifierTest() { | 
 | 
 *         JTextField tf1 = new JTextField ("Type \"pass\" here"); | 
 | 
 *         getContentPane().add (tf1, BorderLayout.NORTH);  | 
 | 
 *         tf1.setInputVerifier(new PassVerifier());  | 
 | 
 *  | 
 | 
 *         JTextField tf2 = new JTextField ("TextField2"); | 
 | 
 *         getContentPane().add (tf2, BorderLayout.SOUTH);  | 
 | 
 *  | 
 | 
 *         WindowListener l = new WindowAdapter() { | 
 | 
 *             public void windowClosing(WindowEvent e) { | 
 | 
 *                 System.exit(0);  | 
 | 
 *             }  | 
 | 
 *         };  | 
 | 
 *         addWindowListener(l);  | 
 | 
 *     }  | 
 | 
 *  | 
 | 
 *     class PassVerifier extends InputVerifier { | 
 | 
 *         public boolean verify(JComponent input) { | 
 | 
 *             JTextField tf = (JTextField) input;  | 
 | 
 *             return "pass".equals(tf.getText());  | 
 | 
 *         }  | 
 | 
 *     }  | 
 | 
 *  | 
 | 
 *     public static void main(String[] args) { | 
 | 
 *         Frame f = new VerifierTest();  | 
 | 
 *         f.pack();  | 
 | 
 *         f.setVisible(true);  | 
 | 
 *     }  | 
 | 
 * }  | 
 | 
 * </pre>  | 
 | 
 *  | 
 | 
 *  @since 1.3  | 
 | 
 */  | 
 | 
 | 
 | 
 | 
 | 
public abstract class InputVerifier { | 
 | 
 | 
 | 
  /**  | 
 | 
   * Checks whether the JComponent's input is valid. This method should  | 
 | 
   * have no side effects. It returns a boolean indicating the status  | 
 | 
   * of the argument's input.  | 
 | 
   *  | 
 | 
   * @param input the JComponent to verify  | 
 | 
   * @return <code>true</code> when valid, <code>false</code> when invalid  | 
 | 
   * @see JComponent#setInputVerifier  | 
 | 
   * @see JComponent#getInputVerifier  | 
 | 
   *  | 
 | 
   */  | 
 | 
 | 
 | 
  public abstract boolean verify(JComponent input);  | 
 | 
 | 
 | 
 | 
 | 
  /**  | 
 | 
   * Calls <code>verify(input)</code> to ensure that the input is valid.  | 
 | 
   * This method can have side effects. In particular, this method  | 
 | 
   * is called when the user attempts to advance focus out of the  | 
 | 
   * argument component into another Swing component in this window.  | 
 | 
   * If this method returns <code>true</code>, then the focus is transfered  | 
 | 
   * normally; if it returns <code>false</code>, then the focus remains in  | 
 | 
   * the argument component.  | 
 | 
   *  | 
 | 
   * @param input the JComponent to verify  | 
 | 
   * @return <code>true</code> when valid, <code>false</code> when invalid  | 
 | 
   * @see JComponent#setInputVerifier  | 
 | 
   * @see JComponent#getInputVerifier  | 
 | 
   *  | 
 | 
   */  | 
 | 
 | 
 | 
  public boolean shouldYieldFocus(JComponent input) { | 
 | 
    return verify(input);  | 
 | 
  }  | 
 | 
 | 
 | 
}  |