FtfInputVerifier.java Source code

Java tutorial

Introduction

Here is the source code for FtfInputVerifier.java

Source

/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly 
*/
// FtfInputVerifier.java
//An example of using an InputVerifier with a formatted textfield.
//

import javax.swing.BorderFactory;
import javax.swing.InputVerifier;
import javax.swing.JComponent;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class FtfInputVerifier {

    public static void main(String argv[]) {

        java.net.URL u = null;
        try {
            u = new java.net.URL("http://www.ora.com/");
        } catch (java.net.MalformedURLException ignored) {
        }

        // create two identical JFormattedTextFields
        JFormattedTextField ftf1 = new JFormattedTextField(u);
        JFormattedTextField ftf2 = new JFormattedTextField(u);

        // and set an InputVerifier on one of them
        ftf2.setInputVerifier(new InputVerifier() {
            public boolean verify(JComponent input) {
                if (!(input instanceof JFormattedTextField))
                    return true; // give up focus
                return ((JFormattedTextField) input).isEditValid();
            }
        });

        JPanel p = new JPanel(new java.awt.GridLayout(0, 2, 3, 8));
        p.add(new JLabel("plain JFormattedTextField:", JLabel.RIGHT));
        p.add(ftf1);
        p.add(new JLabel("FTF with InputVerifier:", JLabel.RIGHT));
        p.add(ftf2);
        p.add(new JLabel("plain JTextField:", JLabel.RIGHT));
        p.add(new JTextField(u.toString()));
        p.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));

        JFrame f = new JFrame("FtfInputVerifier");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JLabel("Try to delete the colon in each field.", JLabel.CENTER),
                java.awt.BorderLayout.NORTH);
        f.getContentPane().add(p, java.awt.BorderLayout.CENTER);
        f.pack();
        f.setVisible(true);
    }
}