2013-09-25 57 views
0

我想重寫DefaultTableModel類的isCellEditable方法,以使我的表格單元格不可編輯。我試圖通過使用匿名內部類實現這個目標,jTable isCellEditable override override not working

enter image description here

但是表格單元格仍然編輯,並試圖調試時,我發現這些代碼並沒有執行覆蓋方法,而不是被直接調用的DefaultTableModel的的isCellEditable方法實例化DefaultTableModel類後。這是爲什麼發生?

回答

1

改爲改寫JTable類的isCellEditable(int, int)

注意:由於您覆蓋了DefaultTableModelisCellEditable(int, int)而非JTable,因此您的問題的標題非常具有誤導性。

另一個說明:我認爲很明顯,您使用的是GUI構建器,我的建議是不是使用它,因爲您不會從GUI構建器學到任何東西。

+0

感謝您的答覆,我會盡力..對不起,我沒有提到這一點。 –

+0

嘿Josh,那工作..我知道GUI builder是不是的方式,但我沒有時間花在建設GUI使用它..感謝您的幫助.. \ –

+1

沒問題,你應該採取學習如何在沒有建設者幫助的情況下構建GUI的時候,所以你可以成爲一個更獨立的程序員。 –

3

檢查模型的創建位置。該表在某處進行初始化(其中行/列數據添加到表中)。在現在(在您的代碼中顯示)內部類被替換爲另一個實例TableModelDefaultTableModel實例我認爲)

+0

感謝您的回覆,我已檢查過它,通過整個代碼進行調試。我相信它正在使用我在代碼中創建的模型.. –

+2

@RameshSivaraman:我很驚訝; 'JTable'將視圖轉換爲協調模型並將請求轉發給模型;另請參閱[答案](http://stackoverflow.com/a/8291432/230513)。 – trashgod

+0

是的,我真的很想弄清楚它爲什麼不重寫時,但是我通過覆蓋上面建議的jTable方法來修復它。 –