Limitar número de caracteres E permitir somente números em um JTextField

3 respostas
alomurilo

Bom dia, pessoal.

Preciso que um JTextField permita somente 4 números, como posso fazer isso?

Tentei bastante antes de criar o tópico. Fiz o seguinte:

Criei uma classe NumCheck para ver se o caracter é um número:

public class NumCheck extends PlainDocument
    {
        private boolean numero;

        public NumCheck(boolean isNumber)
        {
            super();
            numero = isNumber;
        }

        public void insertString(int offs, String str, javax.swing.text.AttributeSet a)
        throws BadLocationException
        {
            if(numero == true)
            {
               
                for (char c : str.toCharArray())
                {
                    if(!Character.isDigit(c))
                    {
                        return;
                    }
                }
            } 
            super.insertString(offs, str.toUpperCase(), a);     
        }
}
private JTextField txtid = new JTextField();
txtid.setDocument(new NumCheck(true));

E uma classe MaxLengthText para limitar o número de chars:

public class MaxLengthText extends PlainDocument{

	private int maxchars;

	public void insertString(int offs, String str, AttributeSet a)
	throws BadLocationException{
		if(str != null && (getLength() + str.length() < maxchars)){
			super.insertString(offs, str, a);
		}
	}
	
	public int getMaxchars() {
		return maxchars;
	}

	public void setMaxchars(int maxchars) {
		this.maxchars = maxchars;
	}

}
private MaxLengthText m5 = new MaxLengthText();
m5.setMaxchars(5);
txtid.setDocument(m5);

Acontece que os dois não funcionam juntos. Deixando do jeito que está, eu consigo limitar o campo para somente permitir números, mas o número de caracteres não é alterado.

Como posso resolver isso?

Obrigado.

3 Respostas

ViniGodoy

http://www.guj.com.br/posts/list/107425.java#579803

alomurilo

Funcionou!

Muito obrigado. :smiley:

alomurilo

Não querendo abusar da sua boa vontade, mas como ficaria o código se eu quiser que não aceite números no JTextField?

Criado 28 de setembro de 2010
Ultima resposta 28 de set. de 2010
Respostas 3
Participantes 2