There is no need for you do create a completely new DefaultTableModel. The only method you need to override is the getColumnClass()
method to return the class of data that is stored for the given column.
In fact I don't know how your model works. The DefaultTableModel uses a Vector of Vectors to store the data, you should not be attempting to reference an external 2D array called "data".
The next question is why are you attempting to assign you custom renderer to all columns? If you want to use your renderer for Date Objects then you should do something like:
table.setDefaultRenderer(Date.class, cellRenderer);
Then Dates will use that renderer and all other columns will use the provided renderers.