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 ???
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!!
[/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.
[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.