Problema com eventos e JComboBox[RESOLVIDO]

Boa noite a todos, estou com um pequeno problema eu tenho o cadastro de cliente que pode ser com cpf ou cnpj e tenho as mascaras feitas para cada uma dessas opção, porem nao sei como eu faço para poder alterar o campo com a mascara de acordo com a opção do cliente no JComboBox. Achei essa alternativa em um forun aki mesmo no site mais ela nao funcionou.

cpf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JComboBox cpf = (JComboBox)e.getSource();

	        if((String)cpf.getSelectedItem() == "CPF"){
	            tDocumento = new JFormattedTextField(mascaracpf);
	        }
	        if((String)cpf.getSelectedItem() == "CNPJ"){
	        	 tDocumento = new JFormattedTextField(mascaracnpj);
	        }
	        
			}
		});

Obrigado a tds.

Quando for postar códigos, utilize a tag ‘code’ e ‘/code’: http://www.guj.com.br/posts/list/50115.java

Quanto a sua dúvida, utilize o método “equals” para comparar Strings e para manipular o evento no combo box implemente ItemListener:

cpf.addItemListener(new ItemListener() { //Captura mudança na seleção do item public void itemStateChanged(ItemEvent e) { //utilize o método equals para comparar Strings if(cpf.getSelectedItem().toString().equals("CPF")) { tDocumento = new JFormattedTextField(mascaracpf); } else if(cpf.getSelectedItem().toString().equals("CNPJ")) { tDocumento = new JFormattedTextField(mascaracnpj); } } });

Eric, foi mal a questão do jeito da postagem do codigo e que ainda não acostumei, mais a ideia que vc deu sobre equals tbm nao funcionou, tpw o campo fica somente com a mascara que setei antes do evento.

Obrigado

Oi DigaoSonar,

Vou dar uma idéia…

Você pode ter dois componentes JFormattedTextField,um para cpf e o outro para o cnpj,deixe os dois setEnabled(false) e quando o usuário escolher uma opção
vc habilita o escolhido deixando (true)…Não sei se é assim que vc quer,mas acho mais facil… :roll:

O problema deve estar acontecendo porque quando ocorre o evento no combo box, “tDocumento” está recebendo uma nova instância de JFormattedTextField, mas o text field que você está visualizando na tela não sofre alterações.

O ideal seria, ao invés de instanciar, apenas alterar a máscara do text field.

tDocumento.setFormatterFactory(new DefaultFormatterFactory(mascaracpf)); //ou mascaracnpj

Muito Obrigado mesmo a tds Anime da maneira como vc disse eu fiz e tbm deu certo apreendi mais uma forma de fazer, ao Eric meu agradecimento as suas ideias ajudaram muito e ajudou a achar a solução para esse problema, estou iniciando em JAVA fazendo um projeto de controle de estoque que vou apresentar na feira do curso que eu faço, muitos me disseram para desistir pq JAVA e muito complicado e a parte gráfica um tanto chata de se fazer, mais com o pessoal aqui do site vou conseguir fazer um projeto bem legal e quem sabe ganhar a feira.

A todos muito obrigado mesmo.

Ate+

Parabéns cara. É isso aí, o fruto da persistência aliada ao esforço é o sucesso.

Sorte e força nos estudos.

Oi DigaoSonar,

Desistir…nunca…tire essa palavra do seu vocabulário…
Fico feliz por ter dado certo,parabéns! :stuck_out_tongue:

Se está satisfeito coloque [Resolvido] no titulo do tópico…

Boa sorte! :wink: