JFormattedTextField no netbeans

Estou precisando criar um JFormattedTextField que receba apenas números e espaços.
Andei pesquisando e vi que existe um comando do tipo:

mascara = new javax.swing.text.MaskFormatter("****");
mascara.setValidCharacters(" 0123456789");

o código setValidCharacters não é aceito pelo netbeans, e essa propriedade também não consta no JFormattedTextField dele.

Alguém sabe como resolver isso (no netbeans)? :?

A muito tempo atrás eu fiz esse método, veja se é útil a você.

// Método para Máscara do JFormattedTextField // Modo de usar: campo = new JFormattedTextField(new mascara("##:##")) protected MaskFormatter mascara(String s) { MaskFormatter formatter = null; try { formatter = new MaskFormatter(s); } catch (java.text.ParseException e) { e.printStackTrace(); } return formatter; }

[quote]// Método para Máscara do JFormattedTextField // Modo de usar: campo = new JFormattedTextField(new mascara("##:##")) protected MaskFormatter mascara(String s) { MaskFormatter formatter = null; try { formatter = new MaskFormatter(s); } catch (java.text.ParseException e) { e.printStackTrace(); } return formatter; }[/quote]

Não entedi aonde esse seu código permite a colocação de espaços.

Alguém mais sabe como?

O parametro “s”, coloca a máscara como você quiser.

Hum… Não deu certo não!

Tem outra alternativa?

Colocou a mascara como " #######"??

amigo, se vc ultizar ("### ###"), tenho 99% de certeza q ele so aceita numeros (sem letras, nem nada mais), logo o espaço vc testa ai se a marcara vai dar certo com ele.

ja usei com data ("##/##/####") e hora ("##:##") e funcionou normalmente

espero ter ajudado…

abraço

Vocês não entenderam a idéia do negócio. Eu quero cria um campo que aceite qualque número (0-9) e espaço em qualquer lugar, e não num espaço pre definido na máscara. Entendeu?

Para deixar mais claro. Se eu quiser por exemplo, criar um campo que aceite somente letras (para um campo nome). Eu vou precisar por espaços também, e não tem um lugar definido pra eu por espaço já que cada pessoa tem um nome diferente e com espaços em branco em lugares diferentes. Entendeu?

Ah tah, entendi, veja se isso te ajuda:

public boolean validaCaracteres(String item, String strValida) {
        // Variaveis para auxilio
        String auxStr = "";
        char auxCode;
        
        // Faz um laco para percorrer a string em busca de caracteres invalidos
        for (int i=0; i<item.length(); i++) {
            auxStr = item.substring(i, (i + 1));
            auxCode = auxStr.charAt(0);
            if((auxCode != 13)&&(auxCode != 10)&&(auxCode != 0)&&(auxCode != 8)) {
                if (strValida.indexOf(auxStr) == -1) {
                    // Retorna false se encontrar algum caracter nao permitido
                    return false;
                }
            }
        }
        
        // Retorna true se estiver tudo certo
        return true;
    }

Para usar basta usar:

validaCaracteres(stringParaValidar, "0123456789 ");

OK. O Código agora deve funcionar, mas para isso, me responda. Aonde eu ponho esse código? No método construtor? Logo abaixo da declaração do JFormattedTextField ou aonde mais seria?

O nome da variável que recebe o JFormattedTextField se chama ‘nome’.

Você pode por onde quiser esse método, até em outra classe se quiser. Mas para chamar ele, tem que ser no evento que o cara ta digitando. Se não me engano é KeyRelease. Faz tempo que não mexo no Netbeans, mas é só clicar com o botão direito em cima do componente e você vai ver as opções.

Dae depois você chama assim:

validaCaracteres(stringParaValidar, "0123456789 ");

Flw!

Certo Pilantra, mas e se eu quiser apenas letras (maiúsculas e minúsculas incluindo as acentuadas), o código de caractere fica como?

Cara, ali na mascara você define o que você quiser que seja aceitavel, é só escrever lá o que você quer que seja aceito pelo controle.

Pecebi um problema no que estou tentando fazer. O JFormattedTextField só aceita um tamanho fixo de caracteres, ou seja, se não preencher todos os espaços ele não é válido. Acho que vou ter que fazer esse controle com o JTextField mesmo. Tem como limitar ele pra receber só letras (maiúsculas e minúsculas e acentuadas) e espaços?

Não entendi isso !

Boa tarde pessoal
Sei que o topico é meio antigo, mas estou com o mesmo problema dele
Existe alguma forma de usar o JFormattedTextField sem que ele aceita um tamanho fixo de carateres? ou tenho que utilizar outra forma?
estava procurando alguma maneira de quando o usuario digitar caracteres como por exemplo “>” ou “/” ele não deixaria ele fazer isso, somente se fosse digitado Letras “abçórt” ou uma combinação de letras e números “sasdçó34”

Obrigado desde já