DefaultTableModel使单元格不可编辑JTable

时间:2012-10-11 13:01:23

标签: java swing jtable override defaulttablemodel

我有一个JAVA项目,并希望使用DefaultTableModel使我的JTable不可编辑。我知道一个解决办法,称为:

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

喜欢说:我不喜欢这个。这不符合我学校训练的规则。

有没有办法做到这一点?也许有一个好方法。我希望如此!

2 个答案:

答案 0 :(得分:10)

您不应该为JTable本身创建子类,而应该是表模型:

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

或者更好的是,不要使用DefaultTableModel,并使用直接获取业务对象中信息的AbstractTableModel,而不是将业务对象中的所有信息复制到Vectors。

答案 1 :(得分:2)

选择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;}  
        }};