Jtextfields sem tecla de validação no texo

:frowning: 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