

/****
	* Classe DDocumentNumber : permet de personnaliser la gestion du "model" des composants Texte
	*        proposee dans l'api de swing 
	*
	****/


import javax.swing.text.*;
import javax.swing.*;
import java.awt.BorderLayout;

public class TestDocumentNumber extends JFrame
{
	public TestDocumentNumber ()
	{
		super ("Demo");

		DDocumentNumber model = new DDocumentNumber ();
		JTextField texte = new JTextField (model, "", 10);
		this.getContentPane ().add (texte);
		this.getContentPane ().add (new JButton ("decoration"), BorderLayout.SOUTH);

		this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		this.setLocation (200, 200);
		this.pack ();
		this.setVisible (true);
	}

	public static void main (String argv [])
	{
		new TestDocumentNumber ();
	}
}



class DDocumentNumber extends PlainDocument
{
	public DDocumentNumber ()
	{	super ();
	}

	/**
	 * Redefini la methode de la classe PlainDocument permttant ainsi d'autoriser 
	 * uniquement les caracteres desires
	 */
	public void insertString (int offs, String str, AttributeSet a) throws BadLocationException
	{
		StringBuffer sb = new StringBuffer ();
		char car;
		for (int i=0; i<str.length(); i++)
		{	car = str.charAt(i);
			if (Character.isDigit (car))
			{	sb.append(car);	
			}
		}
		super.insertString(offs, sb.toString(), a);
	}
}
