调用jTable的setValue方法时,也会触发TableChanged事件,请问如何在调用setValue方法时,不触发TableChanged事件。

解决方案 »

  1.   


    //JTable 有这个方法返回数据模型
     TableModel getModel() 
              返回提供此 JTable 所显示数据的 TableModel。 //数据模型TableModel 有这些方法
     void removeTableModelListener(TableModelListener l) 
              每当数据模型发生更改时,就从被通知的列表中移除一个侦听器。  void addTableModelListener(TableModelListener l) 
              每当数据模型发生更改时,就将一个侦听器添加到被通知的列表中。 //TableModelListener 有
    void tableChanged(TableModelEvent e) 
              此细粒度通知告知侦听器单元格、行或列的哪些具体范围发生了更改。 // 可以自己写个实现了TableModelListener 的类 实例化为个对象 在要的时候 add不要时remove
      

  2.   

    我看了你这篇帖子,终于明白你说的无限对话框了~~~一并回答吧~~你重写一个TableModel,把里面的setValueAt给重写了,public void setValueAt(Object aValue, int row, int column){
        setValueAt(aValue, row, column, true);
    }自己写个方法,public void setValueAt(Object aValue, int row, int column, boolean isFireTableChange){
        Vector rowVector = (Vector)dataVector.elementAt(row);
        rowVector.setElementAt(aValue, column);
        if (isFireTableChange){
            fireTableCellUpdated(row, column);
        }
    }大概就这个意思,你适当改改多嘴说一句,我一直对组员说,搞Java的,一定要把JDK里面那个src.zip解出来,放到eclipse的工程里面,有问题就看看原码