[Resolvido] Problema com checkbox numa jTable (AbstractTableModel)

1 resposta
mizumoto

Pessoal,

Eu tenho uma tabela que tem um AbstractTableModel associado a ela. A primeira coluna é uma checkbox.
Eu gostaria de saber por que motivo não consigo selecionar as checkboxes que adiciono nesse modelo. Observem que no código abaixo o método isCellEditable retorna true para essa coluna e mesmo assim não consigo selecionar.

desde já agradeço!

package br.com.lgc.realtime.gui.model;

import br.com.lgc.exatapipeline.CurveParameters;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class ExataCurveTableModel extends AbstractTableModel {
    
    ArrayList<Object[]> tableData=new ArrayList();
        
    public static final int GET_CURVE_COLUMN = 0;
    public static final int ORINIGAL_NAME_COLUMN = 1;
    public static final int STORE_NAME_COLUMN = 2;
    public static final int SERVICE_COLUMN = 3;
    public static final int RUN_COLUMN = 4;
    public static final int PASS_COLUMN = 5;
    public static final int VERSION_COLUMN = 6;
    public static final int VALUE_UNIT_DESCRIPTION_COLUMN = 7;
    public static final int RESAMPLING_SCHEME_COLUMN = 8;
    public static final int NULL_VALUE_COLUMN = 9;
    public static final int MULTIPLIER_COLUMN = 10;
    
    public static final String GET_CURVE_COLUMN_TEXT = "Get Curve";
    public static final String ORINIGAL_NAME_COLUMN_TEXT = "Original Name";
    public static final String STORE_NAME_COLUMN_TEXT = "Store Name";
    public static final String SERVICE_COLUMN_TEXT = "Service";
    public static final String RUN_COLUMN_TEXT = "Run";
    public static final String PASS_COLUMN_TEXT = "Pass";
    public static final String VERSION_COLUMN_TEXT = "Version";
    public static final String VALUE_UNIT_DESCRIPTION_COLUMN_TEXT = "Value Unit Description";
    public static final String RESAMPLING_SCHEME_COLUMN_TEXT = "Resampling Scheme";
    public static final String NULL_VALUE_COLUMN_TEXT = "Null Value";
    public static final String MULTIPLIER_COLUMN_TEXT = "Multiplier";

    public int getRowCount() {
        return tableData.size();
    }

    public int getColumnCount() {
        return 11;
    }

    public void add(CurveParameters curveParameters) {
        tableData.add(new Object[]{curveParameters.CURVE_SELECTED,
        curveParameters.ORIGINAL_NAME,
        curveParameters.STORE_NAME,
        curveParameters.SERVICE,
        curveParameters.RUN,
        curveParameters.PASS,
        curveParameters.VERSION,
        curveParameters.VALUE_UNIT_DESCRIPTION,
        curveParameters.RESAMPLING_SCHEME,
        curveParameters.NULL_VALUE,
        curveParameters.MULTIPLIER});
        this.fireTableDataChanged();
    }
    
    public void setTable(List<CurveParameters> curveParameters) {
        tableData.clear();
        for (CurveParameters cp : curveParameters) {
            tableData.add(new Object[]{cp.CURVE_SELECTED,
                cp.ORIGINAL_NAME,
                cp.STORE_NAME,
                cp.SERVICE,
                cp.RUN == -1 ? "" : cp.RUN,
                cp.PASS,
                cp.VERSION == -1 ? "" : cp.VERSION,
                cp.VALUE_UNIT_DESCRIPTION,
                cp.RESAMPLING_SCHEME,
                cp.NULL_VALUE,
                cp.MULTIPLIER});
        }
        this.fireTableDataChanged();
    }
    
    @Override
    public String getColumnName(int column)
    {
        switch( column )
        {
            case GET_CURVE_COLUMN:
                return GET_CURVE_COLUMN_TEXT;
            case ORINIGAL_NAME_COLUMN:
                return ORINIGAL_NAME_COLUMN_TEXT;
            case STORE_NAME_COLUMN:
                return STORE_NAME_COLUMN_TEXT;
            case SERVICE_COLUMN:
                return SERVICE_COLUMN_TEXT;
            case RUN_COLUMN:
                return RUN_COLUMN_TEXT;
            case PASS_COLUMN:
                return PASS_COLUMN_TEXT;
            case VERSION_COLUMN:
                return VERSION_COLUMN_TEXT;
            case VALUE_UNIT_DESCRIPTION_COLUMN:
                return VALUE_UNIT_DESCRIPTION_COLUMN_TEXT;
            case RESAMPLING_SCHEME_COLUMN:
                return RESAMPLING_SCHEME_COLUMN_TEXT;
            case NULL_VALUE_COLUMN:
                return NULL_VALUE_COLUMN_TEXT;
            case MULTIPLIER_COLUMN:
                return MULTIPLIER_COLUMN_TEXT;
        }
        return null;
    }
    
    @Override
    public boolean isCellEditable(int row, int column)
    {
        switch (column) {
            case GET_CURVE_COLUMN:
                return true;
            case ORINIGAL_NAME_COLUMN:
                return false;
            case STORE_NAME_COLUMN:
                return true;
            case SERVICE_COLUMN:
                return true;
            case RUN_COLUMN:
                return true;
            case PASS_COLUMN:
                return true;
            case VERSION_COLUMN:
                return true;
            case VALUE_UNIT_DESCRIPTION_COLUMN:
                return true;
            case RESAMPLING_SCHEME_COLUMN:
                return true;
            case NULL_VALUE_COLUMN:
                return true;
            case MULTIPLIER_COLUMN:
                return true;
        }
        return false;
    }
     
    @Override
    public Class getColumnClass(int column) {
        switch (column) {
            case GET_CURVE_COLUMN:
                return Boolean.class;
            case ORINIGAL_NAME_COLUMN:
                return String.class;
            case STORE_NAME_COLUMN:
                return String.class;
            case SERVICE_COLUMN:
                return String.class;
            case RUN_COLUMN:
                return String.class;
            case PASS_COLUMN:
                return String.class;
            case VERSION_COLUMN:
                return String.class;
            case VALUE_UNIT_DESCRIPTION_COLUMN:
                return String.class;
            case RESAMPLING_SCHEME_COLUMN:
                return String.class;
            case NULL_VALUE_COLUMN:
                return String.class;
            case MULTIPLIER_COLUMN:
                return String.class;
        }
        return null;
    }
   
    @Override
    public Object getValueAt(int row, int column) {
        return tableData.get(row)[column];
    }
}

1 Resposta

mizumoto

Só estava faltando o setValueAt!

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        tableData.get(rowIndex)[columnIndex] = aValue;
    }

Vlw pessoal!

Criado 4 de outubro de 2013
Ultima resposta 4 de out. de 2013
Respostas 1
Participantes 1