Num frame coloquei dois botões pertencentes ao mesmo grupo (CNPJ e CPF). Já pesquisei bastante e ainda não descobri como fazer para, ao abandonar o botão escolhidos e pasar o foco para um Campo JFotmattedTextField, o mesmo receba a máscara “##.###.###/####-##” para CNPJ ou ###.###.###-## para CPF.
Eu sempre setei a máscara na hora me que eu crio a MaskFormatter. Não entendi muito bem, mas dependendo de qual botão for clicado, você cria a máscara de um jeito diferente (dentro dos métodos ActionPerformed mesmo).
C
Cl_dio_Rocha
Quando criei o campo no netBeans 6.1 não formatei nenhuma máscara pelo fato de não saber se o usuário iria optar pelo CNPJ ou pelo CPF, por isso que gostaria de criar tal máscara pelo código, quando o campo ganhasse foco.
Andre_Brito
Oi.
Pois então. Quando o foco for no campo do CNPJ, você cria uma mascará com o jeitão do CNPJ. Ou ainda, como isso vai ser bastante utilizado, acho que você já pode criar duas máscaras diferentes. Aí quando o foco for no campo do CNPJ, você faz assim:
campoCNPJ.setFormatterFactory(maskCNPJ);
Eu não sei direito, mas acredito que seja o método que falei.
Abraço.
C
Cl_dio_Rocha
Vou tentar…ou melhor eu até acho que eu já tentei…vou ver. Depois eu informo se funcionou. Obrigado.
E ainda assim não funciona. Será que foram alterações realizadas?
C
Cl_dio_Rocha
Desde que me deparei com está dúvida tenho vasculhado a net atrás de uma solução e ainda não a encontrei. Alguém poderia me ajudar?
C
Cl_dio_Rocha
Tô subindo o tópico para ver se alguém me ajuda.
thundercas
Cara, como você diferencia CNPJ de CPF?? São 2 botões diferentes?? Ou são 2 RadioButtons?
Se forem 2 Radios, tem um método específico para identificar a seleção deles, que não é o getSource(). Agora, se estiver usando JButtons, não visualizo nada errado no seu código e to sem Java aqui pra compilar. Não da pra detalhar pra gente o que ta acontecendo??
C
Cl_dio_Rocha
Estou usando dois JRadioButtons. Talvez esse deve ser o motivo do não funcionamento do código. Vou pesquisar.
C
Cl_dio_Rocha
Ainda não consegui acertar o código com dois JRadioButton’s.
C
Cl_dio_Rocha
Sobe pra ver…
thundercas
Então cara, você não pode usar o getSource(), você tem que usar o método que verifica se o RadioButton está selecionado… Não to com Java aqui e to com preguiça de procurar na API, mas é só abrir o seu Eclipse ou NetBeans e pressionar CTRL+SPACE depois de digitar o componente…
C
Cl_dio_Rocha
Mudei o código conforme a seguir para o JRadioButton fosse selecionado, transferisse o foco para o JFormattedTextField txtNrRecFed, mas ainda não está funcionando. Alguém tem uma sugestão?
Cl?dio Rocha post seu codigo inteiro fica melhor para analisar sua situacao…
correainfo
Cl?dio Rocha:
Mudei o código conforme a seguir para o JRadioButton fosse selecionado, transferisse o foco para o JFormattedTextField txtNrRecFed, mas ainda não está funcionando. Alguém tem uma sugestão?
Cl?dio Rocha post seu codigo inteiro, fica melhor para analisar onde esta o errro
C
Cl_dio_Rocha
A seguir o código em questão:
importjava.awt.event.ActionEvent;importjava.text.ParseException;importjavax.swing.JFormattedTextField;importjavax.swing.text.MaskFormatter;publicclassTelaEmpresaextendsjavax.swing.JFrame{privateMaskFormattermask=null;/** Creates new form TelaEmpesa */publicTelaEmpresa(){initComponents();}@SuppressWarnings("unchecked")//Generate CodeprivatevoidtxtAutuadoActionPerformed(java.awt.event.ActionEventevt){optCNPJ.requestFocus();// TODO add your handling code here:}privatevoidoptCNPJActionPerformed(java.awt.event.ActionEventevt){if(optCNPJ.isSelected()==true)txtNrRecFed.requestFocus();try{mask=newMaskFormatter("##.###.###/####-##");txtNrRecFed=newJFormattedTextField(mask);}catch(ParseExceptione){}// TODO add your handling code here:}publicstaticvoidmain(Stringargs[]){java.awt.EventQueue.invokeLater(newRunnable(){publicvoidrun(){newTelaEmpresa().setVisible(true);}});}// Variables declaration - do not modify privatejavax.swing.JButtoncmdGravar;privatejavax.swing.JButtoncmdLimpar;privatejavax.swing.JButtoncmdSair;privatejavax.swing.JLabeljLabel1;privatejavax.swing.JLabeljLabel2;privatejavax.swing.JPaneljPanel1;privatejavax.swing.JPaneljPanel2;privatejavax.swing.JPaneljPanel3;privatejavax.swing.JRadioButtonoptCNPJ;privatejavax.swing.JRadioButtonoptCPF;privatejavax.swing.JRadioButtonoptEmbarc;privatejavax.swing.ButtonGroupoptGrupoCatAut;privatejavax.swing.ButtonGroupoptGrupoRecFed;privatejavax.swing.JRadioButtonoptTransCarga;privatejavax.swing.JRadioButtonoptTransPass;privatejavax.swing.JTextFieldtxtAutuado;privatejavax.swing.JFormattedTextFieldtxtNrRecFed;// End of variables declaration }
C
Cl_dio_Rocha
Ainda não funciona. Alguém tem uma sugestão.
fantomas
Gente eu acho que o caminho da praia é por aqui ó:
publicclassTelaEmpresaextendsJFrame{privatestaticfinalStringMSK_CNPJ="##.###.###/####-##";privatestaticfinalStringMSK_CPF="###.###.###.##";privateJFormattedTextFieldtxtCodigo=newJFormattedTextField();privateJRadioButtonoptCNPJ=newJRadioButton("Cnpj");privateJRadioButtonoptCPF=newJRadioButton("Cpf");publicTelaEmpresa(){this.inicializar();}privatevoidinicializar(){this.txtCodigo.setColumns(25);JPanelpnlCodigo=newJPanel(newFlowLayout(FlowLayout.LEFT));JPanelpnlTipos=newJPanel(newFlowLayout(FlowLayout.LEFT));pnlCodigo.add(newJLabel("Código:"));pnlCodigo.add(this.txtCodigo);ButtonGroupgrupoTipos=newButtonGroup();grupoTipos.add(this.optCNPJ);grupoTipos.add(this.optCPF);pnlTipos.add(this.optCNPJ);pnlTipos.add(this.optCPF);// ---------------------------->> INICIO DA PARTE QUE INTERESSA <<--------------------------this.optCNPJ.setSelected(true);this.txtCodigo.setFormatterFactory(this.obterFormatacao(MSK_CNPJ));this.optCNPJ.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){TelaEmpresa.this.aplicarFormatacao(e);}});this.optCPF.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){TelaEmpresa.this.aplicarFormatacao(e);}});// ---------------------------->> FIM DA PARTE QUE INTERESSA <<-------------------------- super.getContentPane().add(pnlCodigo,BorderLayout.CENTER);super.getContentPane().add(pnlTipos,BorderLayout.SOUTH);super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);super.setSize(400,90);super.setLocationRelativeTo(null);}// ---------------------------->> INICIO DA PARTE QUE MUITO INTERESSA <<--------------------------privatevoidaplicarFormatacao(ActionEventevent){Stringpic=null;if(optCNPJ.isSelected()==true){pic=MSK_CNPJ;}else{pic=MSK_CPF;}this.txtCodigo.setFormatterFactory(this.obterFormatacao(pic));this.txtCodigo.setValue(null);this.txtCodigo.requestFocus();}privateDefaultFormatterFactoryobterFormatacao(Stringpic){DefaultFormatterFactoryfactory=null;try{MaskFormatterformatter=newMaskFormatter(pic);factory=newDefaultFormatterFactory(formatter);}catch(ParseExceptione){e.printStackTrace();}returnfactory;}// ---------------------------->> FIM DA PARTE QUE MUITO INTERESSA <<--------------------------publicstaticvoidmain(String[]args){TelaEmpresaempresaView=newTelaEmpresa();empresaView.setVisible(true);}}
Executei na minha máquina e funcionou, eu juro rsrsrsrsr.
flws
fantomas
Gente eu acho que o caminho da praia é por aqui ó:
publicclassTelaEmpresaextendsJFrame{privatestaticfinalStringMSK_CNPJ="##.###.###/####-##";privatestaticfinalStringMSK_CPF="###.###.###.##";privateJFormattedTextFieldtxtCodigo=newJFormattedTextField();privateJRadioButtonoptCNPJ=newJRadioButton("Cnpj");privateJRadioButtonoptCPF=newJRadioButton("Cpf");publicTelaEmpresa(){this.inicializar();}privatevoidinicializar(){this.txtCodigo.setColumns(25);JPanelpnlCodigo=newJPanel(newFlowLayout(FlowLayout.LEFT));JPanelpnlTipos=newJPanel(newFlowLayout(FlowLayout.LEFT));pnlCodigo.add(newJLabel("Código:"));pnlCodigo.add(this.txtCodigo);ButtonGroupgrupoTipos=newButtonGroup();grupoTipos.add(this.optCNPJ);grupoTipos.add(this.optCPF);pnlTipos.add(this.optCNPJ);pnlTipos.add(this.optCPF);// ---------------------------->> INICIO DA PARTE QUE INTERESSA <<--------------------------this.optCNPJ.setSelected(true);this.txtCodigo.setFormatterFactory(this.obterFormatacao(MSK_CNPJ));this.optCNPJ.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){TelaEmpresa.this.aplicarFormatacao(e);}});this.optCPF.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){TelaEmpresa.this.aplicarFormatacao(e);}});// ---------------------------->> FIM DA PARTE QUE INTERESSA <<-------------------------- super.getContentPane().add(pnlCodigo,BorderLayout.CENTER);super.getContentPane().add(pnlTipos,BorderLayout.SOUTH);super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);super.setSize(400,90);super.setLocationRelativeTo(null);}// ---------------------------->> INICIO DA PARTE QUE MUITO INTERESSA <<--------------------------privatevoidaplicarFormatacao(ActionEventevent){Stringpic=null;if(optCNPJ.isSelected()==true){pic=MSK_CNPJ;}else{pic=MSK_CPF;}this.txtCodigo.setFormatterFactory(this.obterFormatacao(pic));this.txtCodigo.setValue(null);this.txtCodigo.requestFocus();}privateDefaultFormatterFactoryobterFormatacao(Stringpic){DefaultFormatterFactoryfactory=null;try{MaskFormatterformatter=newMaskFormatter(pic);factory=newDefaultFormatterFactory(formatter);}catch(ParseExceptione){e.printStackTrace();}returnfactory;}// ---------------------------->> FIM DA PARTE QUE MUITO INTERESSA <<--------------------------publicstaticvoidmain(String[]args){TelaEmpresaempresaView=newTelaEmpresa();empresaView.setVisible(true);}}
Executei na minha máquina e funcionou, eu juro rsrsrsrsr.
flws
C
Cl_dio_Rocha
Vou testar mas desde já muito obrigado. Muito engraçada sua postagem…