import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import javax.swing.JFrame; 
import javax.swing.JTable; 
import javax.swing.ListSelectionModel; 
import javax.swing.table.DefaultTableModel; 

public class TableTest { 

private static String[] rows = new String[] { 
"Row1", "Row2", "Row3", "Row4", "Row5", 
"Row6", "Row7", "Row8", "Row9", "Row10"}; 

public static void main(final String[] args) { 

final DefaultTableModel model = new DefaultTableModel(); 
model.addColumn("Test", rows); 
final JTable table = new JTable(model); 
table.setRowHeight(25); 
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

final MouseAdapter adapt = new MouseAdapter() { 

private boolean isRowSelectable(int rowIndex) { 
return rowIndex % 2 == 0; 
} 
@Override 
public void mouseMoved(final MouseEvent pE) { 
final int row = table.rowAtPoint(pE.getPoint()); 
if (row > -1 && this.isRowSelectable(row)) { 
table.setRowSelectionInterval(row, row); 
} else { 
table.clearSelection(); 
} 
} 
@Override 
public void mouseEntered(final MouseEvent pE) { 
final int row = table.rowAtPoint(pE.getPoint()); 
if (row > -1 && this.isRowSelectable(row)) { 
table.setRowSelectionInterval(row, row); 
} else { 
table.clearSelection(); 
} 
} 
@Override 
public void mouseExited(final MouseEvent pE) { 
table.clearSelection(); 
} 
}; 
table.addMouseListener(adapt); 
table.addMouseMotionListener(adapt); 

final JFrame frame = new JFrame(); 
frame.setSize(800, 300); 
frame.add(table); 
frame.setVisible(true); 
} 
} 