網上有很多關於怎樣實現JTable不能被編輯的文章,因為如果不設置的話,雙擊單元格就會將單元格的內容讀入一個默認的編輯器裡,很多時候我們並不希望這樣的事情發生,所以必須do something來阻止它。呵呵,好吧,我承認大家都知道下面這種方法可以實現讓整個表格不不允許被編輯
DefaultTableModel newTableModel = new DefaultTableModel(dataVector,columnModelVector){ @Override public boolean isCellEditable(int row,int column){ return false; } };
沒什麼神秘的,就是重寫DefaultTableModel的方法isCellEditable方法,但更多的情況下,我們是需要指定表格中某一列或若干列允許被編輯,如商品列表中的數量,價格等等,這樣又如何去實現呢?
其實仔細觀察一下,這個isCellEditable方法會傳兩個參數進來,明眼人一看就知道,這分別是單元格的行和列索引,所以,根據這個row和column來控制返回true或false,我們的願望就能實現了。下面是幾個例子,要學會舉一反三噢:
1、只允許表格的第三列被編輯
public boolean isCellEditable(int row,int column){ if(column == 3){ return true; }else{ return false; } }
2、只允許表格的第二行、第二列的單元格被編輯
public boolean isCellEditable(int row,int column){ if(row == 2 && column == 2){ return true; }else{ return false; } }
3、只允許表格的第4行和第6被編輯
public boolean isCellEditable(int row,int column){ if(row == 4 || row == 6){ return true; }else{ return false; } }