我正在使用多个构建和应用程序,JTables我需要检测何时发生单元格值更改,以便我可以在数据库中更新它.我尝试TableModelListener并覆盖tableChanged,但只有在我编辑完单元格后单击(单击另一行)时才会触发.
还有其他办法吗?
我有一个JTable,其中实现了一个扩展AbstractTableModel的自定义模型.
public abstract class AbstractTable extends AbstractTableModel{
public Class<? extends Object> getColumnClass(int c) {}
}
Run Code Online (Sandbox Code Playgroud)
因为我已经实现了getColumnClass方法,所以布尔值会像复选框一样呈现在表中.我想截取复选框的状态更改但不幸的是我不能直接添加鼠标监听器,因为我没有对复选框本身的引用,它不是由我创建的.
如何设置鼠标侦听器来拦截复选框状态更改事件?
编辑:
@jzd的答案是对的.我可以在setValue方法中捕获更改.但我想知道如何实现基于鼠标监听器的方法.
我有一个带有自定义TreeModel和自定义TreeRenderer的JTree.树模型包含一堆不同类型的对象.其中一种类型的显示方式与其他类型不同:显示的文本是对象的两个字段的串联.当我编辑单元格时,我想用编辑的文本更新其中一个字段.到目前为止,我的工作得很好.
我的问题:当编辑时显示的文本是2个字段的完整连接值时,即使您实际上只是编辑其中一个字段,这也很令人困惑.所以我想只显示用户开始编辑时正在编辑的一个字段的内容.
我尝试使用自定义CellEditor来做这件事,我看到它应该工作的方式,这种方法在我的情况下似乎有点过分.我只是想在很多情况下改变显示的文本,所以我自然而然地希望实现它,而不是整个CellEditor来完成我的Tree的整个内容.
是否有更快速,更简单的方法,或者我必须使用自定义编辑器?
谢谢