[Resolvido] Atribuindo duas máscaras para um mesmo campo

Boa noite pessoal, tenho um ComboBox que define o tipo de pessoa entre Física e Jurídica e estou com a seguinte dificuldade, como devo desenvolver uma classe para o campo onde deverá ser armazenado um CPF/CNPJ com a sua respectiva máscara sendo alterada de acordo com o item selecionado no ComboBox, abaixo segue a classe do ComboBox

public class MeuComboBoxTipoPessoa extends JComboBox implements MeuComponente {

    private String dica;
    private boolean obrigatorio;

    public MeuComboBoxTipoPessoa (String dica, boolean obrigatorio) {
        this.dica = dica;
        this.obrigatorio = obrigatorio;
        addItem("Física");
        addItem("Jurídica");
    }

    public void limpar() {
        setSelectedIndex(0);
    }

    public boolean eObrigatorio() {
        return obrigatorio;
    }

    public boolean eValido() {
        return true;
    }

    public boolean eVazio() {
        return false;
    }

    public String getDica() {
        return dica;
    }

    public void setText(String valor) {
        if (valor.equals("Física")) {
            String.format(valor, "Física");
        } else {
            String.format(valor, "Jurídica");
        }
    }

    public String getText() {
        if (getSelectedIndex() == 0) {
            return "Física";
        } else {
            return "Jurídica";
        }
    }
}

Desde já agradeço!

Basta vc pegar o item selecionado do JCombo e comparar.

Veja:

if(meuCombo.getSelectedItem().toString().equals("Fisica"){
    //mascara pessoa fisica
}else{
   //mascara pessoa juridica
}

t+ e boa sorte.

acho que sua duvida é alterar a mascara em tempo de execução né?
vc tem que usar o FormatterFactory.

veja:

[code]import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;

import javax.swing.text.DefaultFormatterFactory;
import javax.swing.text.MaskFormatter;

public class GujTeste extends JFrame {

private JFormattedTextField txt;
private JComboBox cb;
private MaskFormatter ms;
private MaskFormatter ms2;

public GujTeste() {

	super("TESTE");
	this.setLayout(new FlowLayout());
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	cb = new JComboBox();
	cb.setModel(new DefaultComboBoxModel(new String[] { "", "Fisica","Juridica" }));
	cb.addActionListener(new util());
	txt = new JFormattedTextField();
	txt.setColumns(15);
	try {
		ms = new MaskFormatter("##/##/##/##");
		ms2 = new MaskFormatter("##-##--###");
	} catch (ParseException e) {

		e.printStackTrace();
	}
	this.add(cb);
	this.add(txt);
	this.setSize(300, 100);
	this.setResizable(false);

}

public static void main(String[] args) {

	new GujTeste().setVisible(true);
}

private class util implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		if (cb.getSelectedItem().equals("Fisica")) 
			txt.setFormatterFactory(new DefaultFormatterFactory(ms));
		
		if (cb.getSelectedItem().equals("Juridica"))
			txt.setFormatterFactory(new DefaultFormatterFactory(ms2));
	}
}

}
[/code]

Obrigado yhhik, vou verificar!

Da forma que está realmente funciona yhhik, mas a forma que estou tentando fazer é diferente, pretendo criar outra classe para o campo que irá receber o CPF ou CNPJ. Tenho isso pronto:

package Componentes;

import Estrutura.MeuComponente;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.text.MaskFormatter;

public class MeuCPFCNPJ extends MeuJFormattedTextField implements MeuComponente, ActionListener  {
    private String pessoa;
    private MaskFormatter mfCpf, mfCnpj;

    public MeuCPFCNPJ(String dica, boolean obrigatorio) {
        super(dica, obrigatorio, 11);
        try {
            mfCpf = new MaskFormatter("###.###.###-##");
            mfCnpj = new MaskFormatter("##.###.###/####-##");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Não foi possível carregar a máscara do MeuCPFCNPJ");
            e.printStackTrace();
        }
    }
    
    public void actionPerformed(ActionEvent e) {
        
    }

    public void setMascara(String pessoa) {
        if (pessoa.equals("Física")) {
            mfCpf.install(this);
        } else if (pessoa.equals("Jurídica")) {
            mfCnpj.install(this);
        } else {
            JOptionPane.showMessageDialog(null, "Não foi possível definir a máscara do MeuCPFCNPJ");
        }
    }
}

A minha dificuldade está em como fazer essa classe receber o valor do BomboBox da outra classe (os valores “Física” ou “Jurídica”) de forma que o método setMascara possa alterar a máscara segundo a definição no ComboBox.

Se alguém souber, ficarei grato!
Até mais!

passe pelo construtor.

Cara, tentei mas só funciona se eu passar pelo construtor da classe Cadastro de Cliente, pela classe MeuCpfCnpj ele não está executando :confused:

ignore o q eu disse aki, falei bestera XD