Olá pessoal!
Fiz um painel contendo 3 radiobuttons, adicionei-os a um jpanel e criei 2 componenetes para renderizar na JTable.
Como faço para pegar o valor destes compomentes ou marcar o valor deles?
Ele já está aparecendo como queria na JTable, porém não sei como pegar os valores :
Abaixo, segue o código:
// Painel que será mostrado na tabela
public class JRadioButtonsPanel extends JPanel {
private JRadioButton jrbtnA;
private JRadioButton jrbtnB;
private JRadioButton jrbtnC;
private ButtonGroup buttonGroup = new ButtonGroup();
private String[] opcoes = {"A", "B", "C"};
public JRadioButtonsPanel(){
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
setOpaque(true);
jrbtnA = criaJRadioButton(opcoes[0]);
jrbtnB = criaJRadioButton(opcoes[1]);
jrbtnC = criaJRadioButton(opcoes[2]);
}
private JRadioButton criaJRadioButton(String opcao) {
JRadioButton jrb = new JRadioButton(opcao);
jrb.setOpaque(false);
add(jrb);
buttonGroup.add(jrb);
return jrb;
}
public String getOpcao() {
if (jrbtnA.isSelected()) {
return opcoes[0];
} else if (jrbtnB.isSelected()) {
return opcoes[1];
} else {
return opcoes[2];
}
}
public void setOpcao(String opcao){
if (opcao.equals("A")) {
this.jrbtnA.setSelected(true);
} else if (opcao.equals("B")) {
this.jrbtnB.setSelected(true);
} else {
// Opção padrao
this.jrbtnC.setSelected(true);
}
}
// TableCellEditor
public class JRadioButtonsEditor extends AbstractCellEditor implements TableCellEditor {
private JRadioButtonsPanel painelOpcoes;
public JRadioButtonsEditor(){
this.painelOpcoes = new JRadioButtonsPanel();
}
@Override
public Object getCellEditorValue() {
return this.painelOpcoes.getOpcao();
}
@Override
public Component getTableCellEditorComponent(JTable tabela, Object valor,
boolean isSelected, int linha, int coluna) {
//System.out.println(valor);
if(valor != null){
this.painelOpcoes.setOpcao( valor.toString() );
}
return this.painelOpcoes;
}
}
// TableCellRenderer
public class JRadioButtonsRenderer extends JRadioButtonsPanel implements TableCellRenderer {
public JRadioButtonsRenderer(){
super();
}
@Override
public Component getTableCellRendererComponent(JTable tabela, Object valor,
boolean isSelected, boolean hasFocus, int linha, int coluna) {
if(valor != null){
setOpcao( valor.toString() );
}
return this;
}
}
Na view os componenetes estão sendo setados assim:
this.tabelaVerificacao.getColumnModel().getColumn(5).setCellRenderer(new JRadioButtonsRenderer());
this.tabelaVerificacao.getColumnModel().getColumn(5).setCellEditor(new JRadioButtonsEditor());
Há braços :lol: