Como popular jRadioButtons de um GroupButton dinamicamente ?[RESOLVIDO]

5 respostas
fsfnit

Pessoal, dei uma olhad a aqui no fórum e não achei, por isso pergunto:

Como que eu populo dinamicamente um RadioButton através de um Objeto ?
O caso seria o seguinte, tenho um objeto Pessoa por exemplo, todo populado, e um dos atributos é o Sexo da Pessoa.
Como que faço par ao meu groupbutton “sexo” selecione o sexo correspondente do meu Objeto Pessoa dinamico?
Em um comboBox é tranquilo, faço um for comparando o Objeto com os itens que tenho dentro do combo, mas no radio não consigo.
Pois tenho 6 groupsbuttons com 4 radios cada.
To empacado nisso, se alguem tiver alguma ideia manda ai, pois nao achei.
Obrigado desde já.

5 Respostas

C
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class RadioTest extends JFrame
{
	private ButtonGroup grupo;
	private JRadioButton sexMasc;
	private JRadioButton sexFem;
	private JButton btnOk;
	private JComboBox sexo;
	String [] comboItens = { "Masculino", "Feminino" };
	
	public RadioTest()
	{
		super( "Teste dos RadioButtons" );
		initComponents();
	}
	
	public void initComponents()
	{
		setDefaultCloseOperation( EXIT_ON_CLOSE );
		setLayout( new FlowLayout() );
		sexMasc = new JRadioButton( "Masculino" );
		sexFem = new JRadioButton( "Feminino" );
		btnOk = new JButton( "Alterar" );
		sexo = new JComboBox( comboItens );
		btnOk.addActionListener( new ActionListener()
		{
			public void actionPerformed( ActionEvent e )
			{
				selecionaButton();
			}
		} );
		grupo = new ButtonGroup();
		grupo.add( sexMasc );
		grupo.add( sexFem );
		getContentPane().add( sexMasc );
		getContentPane().add( sexFem );
		getContentPane().add( sexo );
		getContentPane().add( btnOk );
		setSize( 500, 200 );
		setVisible( true );
	}
	
	private void selecionaButton()
	{
				if( sexo.getSelectedItem().toString().equals( comboItens[ 0 ] ) )
				{
					grupo.setSelected( sexMasc.getModel(), true );
				}else{
					grupo.setSelected( sexFem.getModel(), true );
				}
	}
	public static void main( String args[] )
	{
		new RadioTest();
	}
}

Escrevi esse exemplo, espero que ajude =)

fsfnit

Infelizmente não ajudou muito amigo, mas valeu pela intenção.
Só vejo exemplos de como pegar quem está selecionado, isso eu sei fazer, o que nao sei fazer é o inverso,q é selecionar.
Mas obrigadão meu camarada.

C

Então eu não entendi muito bem o que você queria.

O exemplo que postei seleciona automaticamente o radioButton dentro do ButtonGroup, de acordo com a opção que você selecionar no ComboBox, após apertar o botão.

Se você seleciona “Masculino” no Combo, ele seleciona o RadioButton “Masculino”, fazendo o mesmo com “Feminino”.

Poderia explicar melhor o que deseja?
Seria adicionar dinamicamente os RadioButton no ButtonGroup?

fsfnit

Carnevalli:
Então eu não entendi muito bem o que você queria.

O exemplo que postei seleciona automaticamente o radioButton dentro do ButtonGroup, de acordo com a opção que você selecionar no ComboBox, após apertar o botão.

Se você seleciona “Masculino” no Combo, ele seleciona o RadioButton “Masculino”, fazendo o mesmo com “Feminino”.

Poderia explicar melhor o que deseja?
Seria adicionar dinamicamente os RadioButton no ButtonGroup?

Eu estava querendo algo dinâmico. Tenho 7 ButtonGroups, cada um com 4 rádios, totalizando 28 radios, e o valor de cada rádio de cada ButtonGroup está dentro de um objeto O, então tenho que pegar os valores do Objeto O para selecionar os radios de acordo.
É um pouquinho mais complexo do que vc me enviou.
Queria saber se teria como eu varrer um ButtonGroup lendo e comparando os actionscomand de cada elemento dele com o meu objeto, e ai realizar a seleção.
Mas muito obrigado por tentar ajudar.

fsfnit
Bom resolvi da seguinte forma:

(BG_… é um buttongroup com alguns radios)

Os radios devem ter seus actions command definidos. (jRadioButton1.setActionCommand(“Teste”) e faça isso com todos os radios)

bg_xpto.getElements(); - Este cara retorna um Enumeration
Usaremos um Objeto Pessoa como teste com seu metodo getStatus que retorna um status, onde o valor dele obrigatoriamente estará em um dos meus radios do buttongroup.

Então fazemos assim:

Enumeration elementos = bg_xpto.getElements();

Object obj;

JRadioButton btn;

while ( elementos.hasMoreElements() ){

obj = elementos.nextElement();

btn = (JRadioButton) obj;//Cast

if(btn.getActionCommand().equals(Pessoa.getStatus())){

System.out.println(“Achei o radio que contem o mesmo valor que o meu objeto Pessoa contém”);

btn.setSelected(true);

}
}

Espero que ajude alguem.
Qq melhoria no código me informem.

Criado 25 de abril de 2008
Ultima resposta 29 de abr. de 2008
Respostas 5
Participantes 2