Вы можете добавить ListSelectionListener к вашей таблице.Если текущий выбор является невыбираемым столбцом, вы можете отменить выбор.Вот пример:
public class MyTable extends JTable(){
//the column to disable
//... and the currently selected column
private int disabled_col = 2, cur_col = 0;
public MyTable(){
//Create a column selection listener
final ListSelectionModel sel = this.getColumnModel().getSelectionModel();
sel.addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
//If the column is disabled, reselect previous column
if (sel.isSelectedIndex(disabled_col))
sel.setSelectionInterval(cur_col,cur_col);
//Set current selection
else cur_col = sel_mod1.getMaxSelectionIndex();
}
});
}
}
Этот код не обрабатывает несколько отключенных столбцов или выборок, охватывающих несколько столбцов.Вам придется изменить его для обработки этих случаев.