Olá pessoal, dispostos a ajudar um tuga?
Ao pressionar a tecla “+” num Jtextfield tenho um listener que checa e valida o texto do jtextfiled, mas este fica com “+” no texto.
Há alguma forma de evitar isto?
Olá pessoal, dispostos a ajudar um tuga?
Ao pressionar a tecla “+” num Jtextfield tenho um listener que checa e valida o texto do jtextfiled, mas este fica com “+” no texto.
Há alguma forma de evitar isto?
Se ele fica com esse “+” vc tá adicionando ele ao TextField em algum lugar não???
Acho que não saquei direito, posta um trecho do seu código…
Obrigado Ironlynx pela ajuda, mas tiva a ler um tutorial que me ajudou muito aqui no Guj sobre a validação de JTextField’s
import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
import calendario.Hora;
public class CampoHoras extends JTextField {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* This method initializes
*
*/
private class Pt extends PlainDocument {
private static final long serialVersionUID = 1L;
public void insertString(int offset, String str, AttributeSet as)
throws BadLocationException {
super.insertString(offset, textoValidado(str, offset), as);
}
private String textoValidado(String str, int cursor) {
String texto = CampoHoras.this.getText();
// o novo texto depois de aplicada a inserção
String novoTexto = (texto.substring(0, cursor) + str + texto
.substring(cursor, texto.length()));
// no primeiro digito tem que ser 0,1 ou 2
if (novoTexto.length() == 1 && novoTexto.matches("[012]"))
return str;
// no 2º digito no caso de o 1º ser 2 o 2º
// tem que ser 0,1,2 ou 3
if (novoTexto.length() == 2 && novoTexto.matches("[2][0123]"))
// alem de inserir o que o o uilizador prupôs
// insere o caracter divisor de horas
return str + ":";
// ainda no 2º digito no caso de ser 1 ou 0
// o 2º digito pode ser qualquer um
if (novoTexto.length() == 2 && novoTexto.matches("[01]\\d"))
// alem de inserir o que o o uilizador prupôs
// insere o caracter divisor de horas
return str + ":";
// o 4º digito tem que ser entre 0 e 5
if (novoTexto.length() == 4
&& novoTexto.matches("[012]\\d:[012345]"))
return str;
// o 5º digito tem que ser um numero quaquer
if (novoTexto.length() == 5
&& novoTexto.matches("[012]\\d:[012345]\\d"))
return str;
return null;
}
}
public CampoHoras() {
super();
initialize();
}
private void initialize() {
Pt pt = new Pt();
this.setDocument(pt);
}
}
e assim fiz este validador de horas muito fixe o tutorial como a tecla + não é um nº jamais pode aceitar a inserção da Jtextfield.
Segue o link:
http://www.guj.com.br/java.tutorial.artigo.29.1.guj