我在删除表行数据时有如下代码:
.....
    //删除操作
if(e.getSource() == this.delButton)
{

//
  数据层的删除操作代码....
//

//根据新数据层数据更新TableModel
MyTableDemo myTableDemo = new MyTableDemo();
FileChooserEdit myFileChooserEdit = new FileChooserEdit();
KeyCodeEdit myKeyCodeEdit = new KeyCodeEdit();
myTable.setModel(myTableDemo);
TableColumnModel myColumnModel = myTable.getColumnModel();
myColumnModel.getColumn(2).setCellEditor(myFileChooserEdit);
myColumnModel.getColumn(3).setCellEditor(myKeyCodeEdit);
myTable.setColumnModel(myColumnModel);
myTable.setRowSelectionAllowed(false);
myTable.updateUI();

....
}
这样没有任何问题,后来我觉得上头这段更新的代码有可重用性,于是另外封装了一个函数:

//从数据持久层重新构造JTable
public static JTable creatTableFromModel()
{
MyTableDemo myTableDemo = new MyTableDemo();
FileChooserEdit myFileChooserEdit = new FileChooserEdit();
KeyCodeEdit myKeyCodeEdit = new KeyCodeEdit();

JTable newTable = new JTable(myTableDemo);
TableColumnModel myColumnModel = newTable.getColumnModel();
myColumnModel.getColumn(0).setWidth(10);
myColumnModel.getColumn(2).setCellEditor(myFileChooserEdit);
myColumnModel.getColumn(2).setWidth(100);
myColumnModel.getColumn(3).setCellEditor(myKeyCodeEdit);
myColumnModel.getColumn(4).setWidth(40);
//myColumnModel.getColumn(2).setWidth(80);
newTable.setColumnModel(myColumnModel);
newTable.setRowSelectionAllowed(false);
newTable.setRowHeight(28);
newTable.setBounds(new java.awt.Rectangle(16,14,478,141));

return newTable;
}

原先的代码改成
 //删除操作
if(e.getSource() == this.delButton)
{
  //
  数据层的删除操作代码....
//
myTable = Tools.creatTableFromModel();
myTable.updateUI();
}

怪事来了,换成上诉代码后界面中的Table在进行删除操作后一点没变,但数据层操作是成功的,这是怎么回事?