Tamanho de um campo

[i]
Olá !!

Estou com uma dúvida, pode parecer para vocês meio boba… como sou nova na área… estou descobrindo aos poucos…

Então, como fazer um função para permitir que o usuário digite somente o tamanho do campo, como por exemplo, se o campo tem caracteres de 200 digitos, ele só pode digitar até isso, e não pode ultrapassar. Que funcao posso utilizar ???

Obrigada!!

:slight_smile:

[/i]

String campo = “blablabla”; // esse seria seu campo
if (campo.length() > 200)
// nao pode
else
// pode

Claro que isso está sendo feito no back-end.

[]'s

[quote=Rachel da Silveira Campos][i]
Olá !!

Estou com uma dúvida, pode parecer para vocês meio boba… como sou nova na área… estou descobrindo aos poucos…

Então, como fazer um função para permitir que o usuário digite somente o tamanho do campo, como por exemplo, se o campo tem caracteres de 200 digitos, ele só pode digitar até isso, e não pode ultrapassar. Que funcao posso utilizar ???

Obrigada!!

:slight_smile:

[/i][/quote]

Tive esse problema tambem e para a solução eu criei o código abaixo.

int i = evt.getKeyChar();
        String s = edtComp.getText();
        int iinicio = edtComp.getSelectionStart();
        int ifim = edtComp.getSelectionEnd();
        int tamanhoString = s.length();
        int maxLength = 10;
        if (i == 22) {
            //   jTextField1KeyReleased(evt);
            if (tamanhoString >= maxLength) {
                edtComp.setText(s.substring(0, maxLength));
                if (iinicio <= maxLength) {
                    edtComp.setCaretPosition(iinicio);
                } else {
                    edtComp.setCaretPosition(maxLength);
                }
                evt.consume();
            }
            System.out.println(s);
        } else {
            if (tamanhoString >= maxLength) {
                String texto = edtComp.getSelectedText();
                if (texto == null) {
                    evt.consume();
                } else {
                    //edtComp.a
                    String TextoCompleto1 = edtComp.getText().substring(0, iinicio);
                    String TextoCompleto2 = edtComp.getText().substring(iinicio, ifim);
                    String TextoCompleto3 = edtComp.getText().substring(ifim, maxLength);
                    TextoCompleto2 = TextoCompleto2.replace(texto, "");
                    edtComp.setText(TextoCompleto1 + TextoCompleto2 + TextoCompleto3);
                    edtComp.setCaretPosition(iinicio);
                }
            }
        }

coloca no KeyTyped do campo.
Aproveitando, qualquer sujestão é bem vindo, no caso eu tratei varias situações como copiar e colar, e se caso a pessoa selecionar uma parte do texto.
Espero que ajude.

Acredito que esse artigo do GUJ vai te ajudar como me ajudou , segue link:

http://www.guj.com.br/articles/29

[size=24][color=red]Não use o KeyTyped para validar campos. [/color][/size]

Até porque, o usuário pode recortar e colar um valor inválido com o mouse! A maneira correta de fazer isso é através do Document, como descrito no artigo que o colega postou anteriormente. Já tem no GUJ classes implementadas para limitar o tamanho do campo, e para limitar que o conteúdo seja apenas inteiro:

Eventos dificilmente são a maneira correta de validar dados num JTextField.

[size=24][color=red]Não use o KeyTyped para validar campos. [/color][/size]

Até porque, o usuário pode recortar e colar um valor inválido com o mouse! A maneira correta de fazer isso é através do Document, como descrito no artigo que o colega postou anteriormente. Já tem no GUJ classes implementadas para limitar o tamanho do campo, e para limitar que o conteúdo seja apenas inteiro:
http://www.guj.com.br/java/107425-como-fazer-para-o-campo-textfield-receber-so-numeros#579803

Eventos dificilmente são a maneira correta de validar dados num JTextField.[/quote]
Concordo. Aliás, Listeners para este tipo de tratamento acabam caindo no mesmo caminho: bug.
Ao usar Document você faz com que o processamento do texto ocorra antes que o Listener seja “estimulado”, logo, o Listener irá servir para tratar as informações corretamente inseridas.