JFormattedTextField & MaskFormatter

Hi men!

Bem, a minha dúvida é o seguinte:

Estou usando o NetBeans 3.6 pra criar um programa java.

Então, ele já inicia os controles colocados no Frame em uma construtor próprio ("()").

Então, se eu crio o Frame com o nome de AboutFrame, por exemplo, eu crio uma nova sub, chamada “public initializeAbout() {”, então eu coloco todos os códigos de inicialização do Frame aí dentro, já que o NetBeans não deixa eu editar a inicialização dos outros componentes.

Daí eu crio um MaskFormatter.

Só que TODOS os exemplos que eu encontrei dizem que eu devo criar um JFormatterTextField na construção mesmo:

MaskFormatter CPFMask = new MaskFormatter("###.###.###-##);
JFormatterTextField cpfcnpjTextField = new JFormatterTextField(CPFMask);

Mas o NetBeans NÃO DEIXA eu mexer na inicialização.

Tem um método que eu possa utilizar dentro da minha sub???

Eu tentei:
MaskFormatter CPFMask = new MaskFormatter("###.###.###-##)
MaskFormatter.install(cpfcnpjTextField);

mas não funciona.

Alguém pode me dar uma mão???

Obrigado!!!

bah
usa o eclispe!
se o netbeans não deixa vc mecher no seu próprio código, então não o use!

Ok cara!

Eu pedi com educação!

Se não quiser ajudar, muito obrigado!

Eu dispenso qualquer comentário desnecessário!

Do mais, valeu pela não ajuda!

Olá amigos,

Michael,

Não esquente sua cabeça. As vezes as respostas “parecem” grosseiras, mas talvez não sejam. Existe de fato uma mania de responder usando bahh e outras coisas do gênero. Você mesmo começou sua mensagem com um texto em inglês.
Nosso colega, falou que o Eclipse era melhor. É a opinião dele ( e a minha também ) , mas isto não quer dizer que ele não teve educação. Acho que a forma com que pessoas se comunicam na rede é bastante pobre. Mas ele "perdeu"o tempo dele para te dar um conselho, ou mesmo apenas expressar uma opinião.
Realmente, uma plataforma que te deixe amarrado ( será que você não pode realmente mexer no código ? ) prejudica o desenvolvimento.
Quem tá na chuva é pra se molhar, e na rede chove bastante.
Menos stress e uma vida mais longa e feliz a todos,

Abraços,

Márcio

E como eu mexo com mascara no Eclipse eu to me ferrando igual ao cara do NetBeans, eu comecei a usar Eclipse agora…
tipo esse campo
RG = new JTextField( 20 );
fieldsPanel.add( RG );
o 20 n seria o numero de letras e caracteres q eu poderia digitar no layout da tela na aplicação???

Michael, usa o Eclipse, o NetBeans tipo n é um lixo, mas ele te limita mto em determinados casos, coisa q o eclipse nao faz… :slight_smile:

[quote=“Michael Oliveira”]Ok cara!

Eu pedi com educação!

Se não quiser ajudar, muito obrigado!

Eu dispenso qualquer comentário desnecessário!

Do mais, valeu pela não ajuda![/quote]

sinto muito, mas vc me forçou a fazer isso:

(oops… erro de julgamento, editado)

tah nervoso? VAI PESCAR!

uauhauahuahuahauhau

de boa…
eu não tinha nenhuma intenção de te ofender e tal…

só estou falando que se um IDE não te deixa mexer no código, não o use…
se não voltaremos nos velhos tempos do delphi e do VB…

me desculpe pela piada… mas eu sou muito piadista para com pessoas estressadas

Heero Yuy

O código

RG = new JTextField( 20 ); fieldsPanel.add( RG );

está dizendo do tamanho do campo na tela, e não de quantos caracteres podem ser digitados nele.

Vou ver como resolver estes probleminhas e depois escrevo

Abraços,

Márcio

Blz caras!!!

Sabe, é que eu acho o funcionamento do NetBeans é melhor que o Eclipse para desenhar interfaces.

Mas acho que vocês saíram um pouco do tópico da pergunta.

A pergunta era como eu adiciono um MaskFormatter em um JFormattedTextField sem ser no construtor.

E cara: “Tá nervoso? vai pescar??” Vc ouve música sertanoja??? Tsc, tsc!

dae pessoal!
bom, respondendo à pergunta do nosso amigo, o Netbeans nao deixa tu mexer diretamente no codigo. Mas tu pode fazer o q quiser com o codigo q foi gerado automaticamente (inclusive alterar o construtor).
Eh soh clicar no componente e no quadro de propriedades clicar em “Code”. La tu pode alterar a maneira q o Netbeans gera o codigo.
Na opção “Custom Creation Code” , tu pode definir um novo construtor para o componente em questao.
Em relacao a briguinha “Netbeans X Eclipse” eu acho q eh soh uma questão de gosto e costume. Usava o Eclipse em casa e depois passei a usar o Netbeans no meu trampo. Gosto dos 2. Nao acho q o netbeans sai perdendo para o eclipse em nada, especialmente na versao 3.6. Eh soh saber usar corretamente.

bom eh isso ae.

Ok Cara valeu pela dica do NetBeans!!!

Mas agora que eu construi um JFormattedTextField com um MaskFormatter, o problema é outro.

Por exemplo:

cpfcnpjMaskFormatter.setMask("##############)";

daí eu tento colocar um CPF ou CNPJ no JFormattedTextField.

ele tem que consultar um banco de dados Oracle pra verificar se o CPF ou CNPJ já existe lá.

Mas, acontece que se eu preencho as catorze posições, ele aceita.

Mas se eu preencho com 11, ele volta ao número com 14.

O que eu quero fazer é:

depois que eu digito um CPF ou CNPJ ele identifica o tamanho da string (11 ou 14) pra futuramente eu fazer
cpfcnpjMaskFormatter.setMask("###.###.###-##)";
ou
cpfcnpjMaskFormatter.setMask("##.###.###/####-##)";

lembra daqueles campos que quando vc clica dentro a máscara some e depois vc digita o número e ele formata de acordo?

como eu posso resolver isso?

[quote=“Michael Oliveira”]Ok Cara valeu pela dica do NetBeans!!!

Mas agora que eu construi um JFormattedTextField com um MaskFormatter, o problema é outro.

Por exemplo:

cpfcnpjMaskFormatter.setMask("##############)";

daí eu tento colocar um CPF ou CNPJ no JFormattedTextField.

ele tem que consultar um banco de dados Oracle pra verificar se o CPF ou CNPJ já existe lá.

Mas, acontece que se eu preencho as catorze posições, ele aceita.

Mas se eu preencho com 11, ele volta ao número com 14.

O que eu quero fazer é:

depois que eu digito um CPF ou CNPJ ele identifica o tamanho da string (11 ou 14) pra futuramente eu fazer
cpfcnpjMaskFormatter.setMask("###.###.###-##)";
ou
cpfcnpjMaskFormatter.setMask("##.###.###/####-##)";

lembra daqueles campos que quando vc clica dentro a máscara some e depois vc digita o número e ele formata de acordo?

como eu posso resolver isso?[/quote]

cara,
eu recomendo q vc use 2 componentes. Um para o CPF e outro p/ o CNPJ. Dai fica bem mais facil …
Ou entao tu pode adicionar um FocusListener no componente e qdo o foco for perdido vc faz a formatacao do numero. Acho q assim funciona … eu acho

   flw ae!

[quote=“Michael Oliveira”]Ok Cara valeu pela dica do NetBeans!!!

Mas agora que eu construi um JFormattedTextField com um MaskFormatter, o problema é outro.

Por exemplo:

cpfcnpjMaskFormatter.setMask("##############)";

daí eu tento colocar um CPF ou CNPJ no JFormattedTextField.

ele tem que consultar um banco de dados Oracle pra verificar se o CPF ou CNPJ já existe lá.

Mas, acontece que se eu preencho as catorze posições, ele aceita.

Mas se eu preencho com 11, ele volta ao número com 14.

O que eu quero fazer é:

depois que eu digito um CPF ou CNPJ ele identifica o tamanho da string (11 ou 14) pra futuramente eu fazer
cpfcnpjMaskFormatter.setMask("###.###.###-##)";
ou
cpfcnpjMaskFormatter.setMask("##.###.###/####-##)";

lembra daqueles campos que quando vc clica dentro a máscara some e depois vc digita o número e ele formata de acordo?

como eu posso resolver isso?[/quote]

cara,
eu recomendo q vc use 2 componentes. Um para o CPF e outro p/ o CNPJ. Dai fica bem mais facil …
Ou entao tu pode adicionar um FocusListener no componente e qdo o foco for perdido vc faz a formatacao do numero. Acho q assim funciona … eu acho

   flw ae!

Olá cara.

Então, a idéia do FocusListener está ok, mas eu preciso saber como eu faço isso.

Eu ainda sou muito novo no mundo java.

No Visual Basic isso era moleza:

Eu apenas deixa a caixa de texto com o tamanho 14.

quando o usuário pressionava enter ou tab, dependendo do que ele digitou,

eu formatava a máscara com

###.###.###-##

ou

##.###.###/####-##

claro que havia as formulas para verificar a validade destes números.

e depois que o usuario voltava ao campo, a mascara sumia e so ficava os numeros.

Mas eu não estou conseguindo fazer a mesma coisa aki no Java.

Ah, obrigado pelas suas respostas!!!

Vc parece ser o único interessado aki por nossas dúvidas

Michael

blza,
vo quebrar seu galho.
eh mais ou menos assim:

        JFormattedTextField txt = new JFormattedTextField();
        txt.addFocusListener(new FocusListener() {
           
            public void focusGained(java.awt.event.FocusEvent evt) {
                
            }
            
            public void focusLost(java.awt.event.FocusEvent evt) {
                // TODO
                //verificar o tamanho dos strings                
                //se tamanho == 11 => formatacao para cpf
                //se tamanho == 14 => formatacao para cnpj
            }
        });  

Mas eu recomendo q vc compre um livro de java ou procure por tutoriais na internet. Tem um monte espalhado por ai.

  teh mais!

eu nunca vi, mas me disseram que a ultima versão do netbeans deixa vc mexer no código

1° da para mecher no codigo do netbeans…so saber fazer isso.

o modo mais facil de “desbloquear” para poder mecher no codigo do netbenas…se prestar a atenção, a parte do codido que esta “bloqueado” começa com um comentario…so entrar no codigo fonte e deletar esse comentario.

2° eu vou postar o codigo para fazer mascara (dei uma melhorada)

public class validacao {

/** Creates a new instance of validacao */
public validacao() {
}
public static MaskFormatter MaskNumero(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("######"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskData(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("##/##/####"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskCNPJ(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("###.###.###/####-##"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskLetra50(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("**************************************************"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskLetra20(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("********************"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskLetra10(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("**********"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskPreco(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("######.##"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskCIC(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("###.###.###-##"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskTelefone(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("(##)####-####"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskCEP(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("## ###-###"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

public static MaskFormatter MaskLetra200(){

 MaskFormatter masknum;

 try{

    masknum = new MaskFormatter("********************************************************************************************************************************************************************************************************"); 
}     catch(Exception e){
    masknum = null;     }
  return masknum;  }

//------------------------------------------------

}

//utilizando a classe de validacao
public class JCadastroPropriedade extends javax.swing.JDialog {
private JBanco banco;
private String operacao="";
private JCadastroPropriedade Sender=null;
/** Creates new form JCadastroPropriedade */
public JCadastroPropriedade(java.awt.Frame parent, boolean modal,JBanco banco) {
super(parent, modal);
initComponents();
this.banco=banco;
habilita(false);
validacao valida=new validacao();
valida.MaskLetra50().install(jCidade);
valida.MaskLetra50().install(jBairro);
valida.MaskLetra50().install(jEstado);
valida.MaskCEP().install(jCep);
valida.MaskNumero().install(jNumero);
valida.MaskLetra50().install(jRua);
valida.MaskTelefone().install(jTelefone);
valida.MaskTelefone().install(jTelContato);
valida.MaskTelefone().install(jFax);
valida.MaskLetra50().install(jNomeFazenda);
valida.MaskLetra50().install(jContato);
valida.MaskLetra20().install(jInscricao);

}

//…o resto do programa

}
//so da para usar isso com o JFormatterTextField

Desculpem ai o amadorismo, mas como faço p/ baixar o eclipse com o editor gráfico da swing já instalado?
tentei uma vêz instalar os plugins, mas eram 3 e não tive mto sucesso :wink:

se não tiver c/ swing já instalado e alguém puder indicar como fazer isso de uma forma bacana, agradeço desde já

obrigado