Validação de Campos

Pessoal,

Gostaria de saber como faço para validar a edição em um campo, por exemplo, tenho um campo que deve receber apenas caracteres numéricos, então gostaria de amarrá-lo para que o mesmo não aceite qualquer outro caractere.
Obrigado!

de uma olhada nesse codigo, quando for acrescentar o JTexlField a sua tela use
private IntegerTextField jtf;
jtf = new IntegerTextField();

[code]

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

public class IntegerJTextField extends JTextField
{

private long maxValue = Long.MAX_VALUE;
private long minValue = 0;
private int maxLength = String.valueOf(maxValue).length();
private boolean isIPField = false;

/**
* Default constructor for IntegerJTextField.
*/
public IntegerJTextField()
{
super();
}

protected Document createDefaultModel()
{
return new IntegerDocument();
}

public void setMinValue(long value)
{
minValue = value;
}

public long getMinValue()
{
return minValue;
}


public void setIPField(boolean value)
{
isIPField = value;
}

public boolean getIPField()
{
return isIPField;
}

public void setMaxValue(long value)
{
maxValue = value;
}

public long getMaxValue()
{
return maxValue;
}

public void setMaxLength(int value)
{
maxLength = value;
}

public int getMaxLength()
{
return maxLength;
}


private class IntegerDocument extends PlainDocument
{
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
    long typedValue = -1;

    StringBuffer textBuffer = new StringBuffer(IntegerJTextField.this.getText().trim());
    //The offset argument must be greater than or equal to 0, and less than or equal to the length of this string buffer
    if((offs >= 0) && (offs <= textBuffer.length()))
    {
    	    textBuffer.insert(offs,str);
    		String textValue = textBuffer.toString();
    		if(textBuffer.length() > maxLength)
    		{
				JOptionPane.showMessageDialog(IntegerJTextField.this, "The number of characters 	must be less than or equal to " + getMaxLength(), "Error Message",JOptionPane.ERROR_MESSAGE);
				return;
    		}

			if((textValue == null) || (textValue.equals("")))
			{
				remove(0,getLength());
				super.insertString(0, "", null);
				return;
			}

			if(textValue.equals("-") && minValue < 0)
			{
				super.insertString(offs,new String(str), a);
				return;
			}

	// 	    if(maxLength == 3 && str.equals(".") && isIPField)
			if(str.equals(".") && isIPField)
			{
				super.insertString(offs,new String(str),a);
				return;
			}
			else
			{
				try
				{
					typedValue = Long.parseLong(textValue);
					if((typedValue > maxValue) || (typedValue < minValue))
					{
						JOptionPane.showMessageDialog(IntegerJTextField.this, "The value can only be from "+getMinValue()+" to " + getMaxValue(), "Error Message", JOptionPane.ERROR_MESSAGE);
					}
					else
					{
						super.insertString(offs,new String(str),a);
					}
				}
				catch(NumberFormatException ex)
				{
					Toolkit.getDefaultToolkit().beep();
					JOptionPane.showMessageDialog(IntegerJTextField.this, "Only numeric values allowed.", "Error Message", JOptionPane.ERROR_MESSAGE);
				}
			}
	}
}

}
}[/code]

uma sugestão mais prática é jogar o valor do campo para uma variavel do tipo Integer, se caso você escrever no campo uma letra ao passar isso para variavel vai estourar uma exceção, ai é só tratar a exceção e correr pro abraço.