Render de checkbox em Jtable?

Alguem sabe como resolvo este problema…Tenho uma JTable onde incluo objetos em um vetor…qdo incluo um new Boolean(false) ele não esta desenhando o checkbox…tentei new Integer(3) e funciona!!!

Estou com o seguinte código:


......

Object[] data = {"Mary","Snowboarding", new Boolean(false) };
		v.add(data);
		v.add(new String[] { "SP", "São Paulo","w" });
		v.add(new String[] { "RJ", "Rio de Janeiro","w" });
		v.add(new String[] { "RN", "Rio Grande do Norte","w" });
		v.add(new String[] { "ES", "Espirito Santo","w" });
                                v.add(new String[] { "GO", "Goias","w" });
       	}catch(Exception e){e.printStackTrace();}
	
	
	final MyTableModel m=new MyTableModel(columnNames,v,edicao);
	final JTable jtable = new JTable(m);
    jtable.setPreferredScrollableViewportSize(new Dimension(400, 60));
    jtable.setModel(m);
    initColumnSizes(jtable);
.......

private void initColumnSizes(JTable table) {
    MyTableModel model = (MyTableModel)table.getModel();
    TableColumn column = null;
    Component comp = null;
    int headerWidth = 0;
    int cellWidth = 0;
    TableCellRenderer headerRenderer =
    table.getTableHeader().getDefaultRenderer();
    for (int i = 0; i < 3; i++) {
        column = table.getColumnModel().getColumn(i);

        comp = headerRenderer.getTableCellRendererComponent(
                             null, column.getHeaderValue(),
                             false, false, 0, 0);
        headerWidth = comp.getPreferredSize().width;

        comp = table.getDefaultRenderer(model.getColumnClass(i)).
                         getTableCellRendererComponent(
                             table, null,
                             false, false, 0, i);
        cellWidth = comp.getPreferredSize().width;

        column.setPreferredWidth(Math.max(headerWidth, cellWidth));
       
    }
    
}

Minha classe MyTableModel


class MyTableModel extends AbstractTableModel implements TableCellRenderer {
	private boolean DEBUG = false;
	private boolean [] colsEdicao;

	
	private int columnCount;
	private String[] columnNames = null;
	Vector data = new Vector();
    
    
   	public MyTableModel(String[] columnNames, Vector data, boolean [] edicao)
    {
    	setLinhas(data);
		setColunas(columnNames);
		colsEdicao = edicao;
    }
    {
    	
    }
    
    public int getColumnCount() {
        return columnNames.length;
    }

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

    public String getColumnName(int col) {
        return columnNames[col];
    }

    public Object getValueAt(int rowIndex, int colIndex) {
        	Object [] linha = (Object [])getLinhas().get(rowIndex);
    	return linha[colIndex];
    	
    }

       	public Class getColumnClass(int columnIndex) 
    	{
    		 
    	    if(columnIndex == 2) //o checkbox esta na segunda coluna
    	    {
    	        return Boolean.class;
    	    }
    	    return Object.class;
    	}
    



    

       	public boolean isCellEditable(int linha, int coluna) {   
    		  if( coluna == 2 ) {   
    		    return true;   
    		  }   
    		  return false;   
    		}  


       public void setValueAt(Object value, int rowIndex, int colIndex) {
           	Object [] linha = (Object [])getLinhas().get(rowIndex);
		
		linha[colIndex] = (String)value;
		fireTableCellUpdated(rowIndex,colIndex);

    }
    public Vector getLinhas() {return data;}
    public String[] getColunas() {return columnNames;}
    
    public void setColunas(String[] strings) {columnNames = strings;}
    public void setLinhas(Vector dados) {data = dados;}
    
    private void printDebugData() {
        int numRows = getRowCount();
        int numCols = getColumnCount();

        for (int i=0; i < numRows; i++) {
            System.out.print("    row " + i + ":");
            for (int j=0; j < numCols; j++) {
                System.out.print("  " +  ((String []) data.get (i)) [j]);
            }
            System.out.println();
        }
        System.out.println("--------------------------");
    }
       public void addRow (int index, String[] dados)

    {

      data.insertElementAt(dados, index);

      fireTableRowsInserted (index, index);

    }
    public void addRow(int index)

    {

      String [] newRow = new String [columnCount];

      for (int i = 0; i < columnCount; ++i){

        newRow [i] = "";

      }

     data.insertElementAt (newRow, index);

    }

   

    public void addVetor(Vector dados){

      clearTable();

      this.data = dados;

      fireTableRowsInserted(0, data.size());

    }

      public void deleteRow (int index)

    {

      data.remove (index);

      fireTableRowsDeleted (index, index);

    }

   

    public void clearTable()

    {

      int t= data.size();

      for(int i=t-1; i>=0; i--)

        fireTableRowsDeleted(i, i);

      data = new Vector();

    }
   
}

Esta dando o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String
	at javax.swing.JTable$BooleanRenderer.getTableCellRendererComponent(Unknown Source)
	at javax.swing.JTable.prepareRenderer(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
	at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
	at javax.swing.plaf.ComponentUI.update(Unknown Source)
	at javax.swing.JComponent.paintComponent(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JViewport.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at javax.swing.JLayeredPane.paint(Unknown Source)
	at javax.swing.JComponent.paintChildren(Unknown Source)
	at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
	at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
	at javax.swing.JComponent.paint(Unknown Source)
	at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
	at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
	at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
	at java.awt.Container.paint(Unknown Source)
	at sun.awt.RepaintArea.paintComponent(Unknown Source)
	at sun.awt.RepaintArea.paint(Unknown Source)
	at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Vlw :?