Dúvidas ButtonGroup e JRadioButton

4 respostas
manrobfer

Bom dia a todos!

Estou criando uma aplicação e preciso usar o JRadioButton mas apareceu um problema. Se eu coloco em um painel. Os botões não desmarcam automaticamente, ou seja, se eu tiver quatro botoes os quatro ficam marcados. Ao tentar colocá-los em um ButtonGroup não consigo fazer com que os botoes apareçam no furmlário. Veja parte do código abaixo.

rbSomar      = new JRadioButton("Somar",false);      rbSomar.setSelected(true);
                rbSubtrair    = new JRadioButton("Subtrair",false);
                rbMultiplicar  = new JRadioButton("Multiplicar",false);
                rbDividir        = new JRadioButton("Dividir",false);

                grupo.add(rbSomar);
                grupo.add(rbSubtrair);
                grupo.add(rbMultiplicar);
                grupo.add(rbDividir);
//pnOpcoes.add(grupo);
getContentPane().add("Center",painel);    
               getContentPane().add("East",grupo);      //Aqui dá erro
               getContentPane().add("South",tbBotoes);
ja tentei colocar o ButtonGrup em u JPanel mas ai não aparece na tela
grupo.add(rbSomar);
                grupo.add(rbSubtrair);
                grupo.add(rbMultiplicar);
                grupo.add(rbDividir);

                pnOpcoes.add(grupo);
   
               getContentPane().add("Center",painel);    
               getContentPane().add("East",grupo);      //Aqui dá erro
               getContentPane().add("South",tbBotoes);
Como eu resolvo isso?

Obrigado!

4 Respostas

J

Depois de adicionar os JRadioButtons no ButtonGroup, basta adicionar diretamente os JRadioButtons na sua frame, e não o ButtonGroup como vc está tentando.

[]'s

manrobfer

javazilla o seguinte.

eu tentei o que voce me falou mas ai só um dos botoes a aparece o ultimo.

veja o código

grupo.add(rbSomar);
                grupo.add(rbSubtrair);
                grupo.add(rbMultiplicar);
                grupo.add(rbDividir);

                //pnOpcoes.add(grupo);
   
               getContentPane().add("Center",painel);    
               getContentPane().add("East",rbSomar);    
               getContentPane().add("East",rbSubtrair);
               getContentPane().add("East",rbMultiplicar);
               getContentPane().add("East",rbDividir);
J

É porque você está utilizando um BorderLayout e a cada chamada do .add(“East”,radioButton) ele está sobrepondo o radioButton anterior pelo radioButton da chamada do método.

Tenta adicionar todos os radioButtons em um painel e depois adicionar esse painel no seu frame

private JPanel getPanelRadioButtons()
{
	JPanel panelButtons = new JPanel();
		
	GridLayout gridLayout = new GridLayout();
	gridLayout.setRows(4);
	gridLayout.setColumns(1);
		
	panelButtons.setLayout(gridLayout);

        grupo.add(rbSomar);  
        grupo.add(rbSubtrair);  
        grupo.add(rbMultiplicar);  
        grupo.add(rbDividir);
		
	panelButtons.add(rbSomar);
	panelButtons.add(rbSubtrair);
	panelButtons.add(rbMultiplicar);
	panelButtons.add(rbDividir);
	
	return panelButtons;
}

getContentPane().add(“East”, getPanelRadioButtons());

[]'s

manrobfer

Valeu amigo! Agora deu certo!

Criado 7 de janeiro de 2008
Ultima resposta 7 de jan. de 2008
Respostas 4
Participantes 2