Duvida em tratamento deJRadioButton

public class Calculadora extends JFrame {

	

    

    private JRadioButton Jsimples, Jcomposto, TXequivalente;

    private ButtonGroup bg;

	private JPanel painel1;

	

	

    private JButton[] numeros   = new JButton[10];

    



   // private String[] operacoes  = {"/", "Sqrt", "*", "%", "-", "1/x", "+/-", ".", "+", "="};



    public Calculadora() {

    	

        setFocusable(true);

        setTitle("Calculadora");

        

        Container container = getContentPane();

		container.setLayout(new FlowLayout());

        

        painel1 = new JPanel();

		painel1.setLayout(new GridLayout(1,1));

		painel1.setBorder(BorderFactory.createTitledBorder("Juros"));

		

		bg = new ButtonGroup();

		Jsimples = new JRadioButton("Simples", true);

		Jcomposto = new JRadioButton("composto", false);

		TXequivalente = new JRadioButton("Taxa equivalente", false);

		bg.add(Jsimples);

		bg.add(Jcomposto);

		bg.add(TXequivalente);

		

		painel1.add(Jsimples);

		painel1.add(Jcomposto);

		painel1.add(TXequivalente);

		

		container.add(painel1);



		TratadorRadioButton trat = new TratadorRadioButton();

		Jsimples.addItemListener( trat );

		Jcomposto.addItemListener( trat );

		TXequivalente.addItemListener( trat );

        

    }

    

    private class TratadorRadioButton implements ItemListener {

    	

    	public void itemStateChanged( ItemEvent evento )

    	{

    		if ( evento.getSource() == Jsimples)

    		{

    			JOptionPane.showMessageDialog(null,"entra em js");    			

    		}

    		if ( evento.getSource() == Jcomposto)

    		{

    			JOptionPane.showMessageDialog(null,"entra em jc");

    		}

    		if ( evento.getSource() == TXequivalente)

    		{

    			JOptionPane.showMessageDialog(null,"entra em TX");

    		}

    	}

    	

    }

}

Entao galera, to com duvidda no tratamento dos checkbox que criei usando JRadioButton, nao sei o pq , mas quando marco para emtrar en juros composto ele entra no if do juros simples e depois no if do juros composto, isso acontece com qualquer uma das check box.

Alguem poderia me dizer o que esta errado??

vlws

Olá amigo chamuska

Acredito que o motivo seja você estar implementando
o ItemStateChanged ao invés do ActionListener,
ele verifica que a seleção “passou” do Juros Simples
para o Juros Composto, ou seja, o evento
passa pelos dois Radio Buttons.

Tente usar ActionListener que o problema não irá acontecer

Segue o novo código:

public class Calculadora extends JFrame {

    private JRadioButton Jsimples,  Jcomposto,  TXequivalente;
    private ButtonGroup bg;
    private JPanel painel1;
    private JButton[] numeros = new JButton[10];

    public Calculadora() {

        setFocusable(true);
        setTitle("Calculadora");
        Container container = getContentPane();
        container.setLayout(new FlowLayout());

        painel1 = new JPanel();
        painel1.setLayout(new GridLayout(1, 1));
        painel1.setBorder(BorderFactory.createTitledBorder("Juros"));

        bg = new ButtonGroup();
        Jsimples = new JRadioButton("Simples", true);
        Jcomposto = new JRadioButton("Composto", false);
        TXequivalente = new JRadioButton("Taxa Equivalente", false);
        bg.add(Jsimples);
        bg.add(Jcomposto);
        bg.add(TXequivalente);
        painel1.add(Jsimples);
        painel1.add(Jcomposto);
        painel1.add(TXequivalente);
        container.add(painel1);
        TratadorRadioButton trat = new TratadorRadioButton();
        Jsimples.addActionListener(trat);
        Jcomposto.addActionListener(trat);
        TXequivalente.addActionListener(trat);
        
        pack();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private class TratadorRadioButton implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == Jsimples) {
                JOptionPane.showMessageDialog(null, "Entra em Juros Simples");
            }
            if (e.getSource() == Jcomposto) {
                JOptionPane.showMessageDialog(null, "Entra em Juros Composto");
            }
            if (e.getSource() == TXequivalente) {
                JOptionPane.showMessageDialog(null, "Entra em Taxa Equivalente");
            }
        }
    }

    public static void main(String[] args) {
        new Calculadora().setVisible(true);
    }
}

Abraço