The problem is that if the value in a cell the first row is null;
Instead of just checking the first row you nee to loop through all the rows until you find a non-null object and then use that Object to determine which editor to use. If all the rows are null then just use the default editor.
I usually do this by overriding the getColumnClass(...) method: