DefaultTableModel сделать ячейку недоступной для редактирования JTable

У меня есть проект JAVA, и я хочу сделать свой JTable с DefaultTableModel недоступным для редактирования. Я знаю способ сделать это, называемый:

JTable table = new JTable(...){  
  public boolean isCellEditable(int row, int column){  
    return false;  
  }  
};  

Как сказал: мне это не нравится. Это не по правилам моего школьного обучения.

Есть какой-либо способ сделать это? Может есть хороший способ. Я надеюсь, что это так!


person Dave    schedule 11.10.2012    source источник
comment
Какие правила были у вас в школе?   -  person RNJ    schedule 11.10.2012
comment
школа говорит, что это не должно быть похоже на приведенный код.   -  person Dave    schedule 11.10.2012
comment
есть ли другой способ заставить это работать?   -  person Dave    schedule 11.10.2012


Ответы (2)


Вы должны создавать подклассы не самой JTable, а модели таблицы:

DefaultTableModel myModel = new DefaultTableModel(...) {
    @Override
    public boolean isCellEditable(int row, int column) {
        return false;
    }
}

Или, что еще лучше, не используйте DefaultTableModel, а используйте AbstractTableModel, который напрямую получает информацию в ваших бизнес-объектах, а не копирует всю информацию из бизнес-объектов в векторы.

person JB Nizet    schedule 11.10.2012
comment
Спасибо, это работает 4 меня! - person Dave; 12.10.2012

выберите Jtable и не забудьте создать модель таблицы (DefaultTableModel TableModel)

JTable table_1 = new JTable (TableModel){public boolean isCellEditable(int row,int column)  
        {switch(column){             
           case 4:  // select the cell you want make it not editable 
             return false;  
         default: return true;}  
        }}; 
person Adel    schedule 15.08.2013