2013-09-25 48 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方法来修复它。 –