TFormat1.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*; // for DocumentListener
import javax.swing.text.*; // for DefaultFormatter, Document
import java.net.URL;
import java.text.*;
import java.util.Date;

/**
Exercise the default formatter.
*/
public class TFormat1 extends JFrame
{
    public static void main(String[] argv)
    {
        TFormat1 t = new TFormat1();
        t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        t.show();
    }

    public TFormat1()
    {
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension ss = kit.getScreenSize();
        setSize(3*ss.width/4,ss.height/4);
        setLocation(ss.width/8,ss.height/8);
        setTitle("CISC370-011 -- Default formatter demo");

        JPanel p = new JPanel();
        Container cp = getContentPane();
        cp.add(p);

        DefaultFormatter f = new DefaultFormatter();
        f.setOverwriteMode(false);
        JFormattedTextField urlField = new JFormattedTextField(f);
        p.add(urlField);

        urlField.setColumns(50);
        try {
            urlField.setValue(
                new URL("http://www.eecis.udel.edu/~leipold/"));
            }
        catch (Exception e) {
            }

        JFormattedTextField dateField = new 
            JFormattedTextField(
                DateFormat.getDateInstance(DateFormat.MEDIUM));
        dateField.setColumns(50);
        p.add(dateField);
        dateField.setValue(new Date());

        try {
            JFormattedTextField bozo = new 
                JFormattedTextField(
                    new MaskFormatter("###-###-####"));
            bozo.setColumns(50);
            p.add(bozo);
            }
        catch (ParseException ex) {
            }

        JLabel echo = new JLabel("Date goes here.");
        p.add(echo);

        dateField.getDocument().
            addDocumentListener(new SillyListener(echo));
    }
}


class SillyListener implements DocumentListener
{
    public SillyListener(JLabel echo)
    {
        this.echo = echo;
    }

    public void insertUpdate(DocumentEvent e)
    {
        String s;

        Document doc = e.getDocument();
        try {
            s = doc.getText(0,doc.getLength());
            }
        catch (BadLocationException ex) {
            s = "";
            }
        echo.setText(s);
    }

    public void removeUpdate(DocumentEvent e)
    {
        String s;

        Document doc = e.getDocument();
        try {
            s = doc.getText(0,doc.getLength());
            }
        catch (BadLocationException ex) {
            s = "";
            }
        echo.setText(s);
    }

    public void changedUpdate(DocumentEvent e)
    {
        System.out.println("Oops!");
    }

    private JLabel echo;
}