Bom dia pessoal.
Meu problema é que eu tenho uma jtable com colunas possuindo dois tipos de componentes
na primeira linha possuo um JCheckBox e no restante JRadioButtons dentro de JPanel,
porém o JCheckBox só esta permitindo que uma coluna fique selecionada, desta forma quando
seleciono outra coluna ele desmarca as outra selecionadas...
Aí vai o Render e o Editor e o Modelo
class LancamentoEditorTeste extends DefaultCellEditor {
JPanel panel=null;
public LancamentoEditorTeste(JCheckBox checkBox) {
super(checkBox);
}
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
//As colunas de 0 a 2 são apenas descritivas
//apenas a linha 0 deve possuir JCheckBox
if ((row == 0) && (column > 2)) {
JCheckBox lancar = new JCheckBox("teste",false);
return lancar;
}
//o resto deve possuir JRadioButton
else if(((row > 0) && (column > 2)))
{
JPanel panel=new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JRadioButton radio=new JRadioButton();
JRadioButton radio1=new JRadioButton();
panel.add(radio);
panel.add(radio1);
}
return panel;
}
class CheckBoxRenderer implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
JPanel panel=new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
if ((row == 0) && (column > 2)) {
JCheckBox lancar = new JCheckBox("teste", false);
return lancar;
}
else if(((row > 0) && (column > 2)))
{
panel=new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
JRadioButton radio=new JRadioButton();
JRadioButton radio1=new JRadioButton();
panel.add(radio);
panel.add(radio1);
}
return panel;
}
}
import javax.swing.table.AbstractTableModel;
public class FrequenciaTableModel extends AbstractTableModel {
private Object[][] matrix;
private Object[] columnNames;
public FrequenciaTableModel(Object[][] matrix,Object[] columnNames ) {
if (matrix == null)
throw new IllegalArgumentException("Matriz inválida!");
else if(columnNames == null)
throw new IllegalArgumentException("Coluna Names inválido!");
this.matrix = matrix;
this.columnNames=columnNames;
}
public int getColumnCount() {
return matrix[0].length;
}
public int getRowCount() {
return matrix.length;
}
public Object getValueAt(int row, int col) {
return matrix[row][col];
}
public boolean isCellEditable(int row, int col) {
if(col<3)
return false;
else
return true;
}
public void setValueAt(Object value, int row, int col) {
matrix[row][col] = (Object) value;
}
public Class<?> getColumnClass(int col) {
if(col<3)
{
return Object.class;
}
else
{
return Boolean.class;
}
}
public void setValue(int row, int col, Object value) {
matrix[row][col] = value;
fireTableRowsUpdated(row, col);
}
@Override
public String getColumnName(int col) {
return (String) columnNames[col];
}
}
obrigada pela atenção....