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á.
importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;publicclassRadioTestextendsJFrame{privateButtonGroupgrupo;privateJRadioButtonsexMasc;privateJRadioButtonsexFem;privateJButtonbtnOk;privateJComboBoxsexo;String[]comboItens={"Masculino","Feminino"};publicRadioTest(){super("Teste dos RadioButtons");initComponents();}publicvoidinitComponents(){setDefaultCloseOperation(EXIT_ON_CLOSE);setLayout(newFlowLayout());sexMasc=newJRadioButton("Masculino");sexFem=newJRadioButton("Feminino");btnOk=newJButton("Alterar");sexo=newJComboBox(comboItens);btnOk.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){selecionaButton();}});grupo=newButtonGroup();grupo.add(sexMasc);grupo.add(sexFem);getContentPane().add(sexMasc);getContentPane().add(sexFem);getContentPane().add(sexo);getContentPane().add(btnOk);setSize(500,200);setVisible(true);}privatevoidselecionaButton(){if(sexo.getSelectedItem().toString().equals(comboItens[0])){grupo.setSelected(sexMasc.getModel(),true);}else{grupo.setSelected(sexFem.getModel(),true);}}publicstaticvoidmain(Stringargs[]){newRadioTest();}}
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
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?
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.