当前位置: 首页 > 知识库问答 >
问题:

JTable cell listener JAVA

左丘峰
2023-03-14

需要一些帮助来帮助我了解jtable cell侦听器。

我的问题是,我需要捕捉单元格中的变化,当它捕捉到时,我需要得到旧值和新值。

我问的原因是,我使用JTable与DefaultTableModel。

我看到了其他关于这个的帖子,但是当我试图实现时,我没有得到任何“字符串”结果,只有序列化的结果。

以下是我正在使用的:

        table.addPropertyChangeListener(new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {

            System.out.println(evt.getOldValue());
            System.out.println(evt.getNewValue());
        }

    });

这就是我得到的:

null
javax.swing.JTable$GenericEditor@4b20aa93
javax.swing.JTable$GenericEditor@4b20aa93
null
null
javax.swing.JTable$GenericEditor@4b20aa93
com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=9,g=80,b=208]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=202,g=202,b=202]
null
false
com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=202,g=202,b=202]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=9,g=80,b=208]
false
true
com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=9,g=80,b=208]
com.apple.laf.AquaImageFactory$SystemColorProxy[r=202,g=202,b=202]
true
false

共有1个答案

丌官凯康
2023-03-14

两种方法。

第一个是自定义TableModel并覆盖setValueAt(...)方法。基本代码是:

@Override
public void setValueAt(Object newValue, int row, int column)
{
    Object oldValue = getValueAt(row, column);

    // do processing with your "oldValue" and the "newValue"

    super.setValueAt(...);
}

另一种方法是使用“监听器”,您可以将其添加到任何表格模型中。对于这种方法,可以使用表单元格侦听器。每当oldValue/newValue发生更改时,此类将生成一个事件。该事件将允许您访问这两个值,以便进行处理。

根据您的确切要求,您可以使用任何一种方法。

 类似资料:

相关问答

相关文章

相关阅读