我写的一个JTable,我通过修改它的TableModel来更新Table(实际上是把所有的行全部删除),并且调用了fireTableDataChanged。 我可以看到JTable里数据已经被删掉了,但是原来显示数据的位置却留下了空白,没有刷新。如果最小化,然后再最大化就一切显示正常了。 所以我试图用JTable的repaint来刷新,但是没有效果;如果用updateUI就可以,但是我看JDK的帮助,感觉updateUI不是用来干这个的。 这种情况应该怎么解决呢?多谢!

解决方案 »

  1.   

    那得看你的模型是什么,如果继承自abstracttablemodel,要调用它的fireTableRowsDeleted方法,才会刷新视图,同样,你增加、更新都要调用相应的方法。
      

  2.   

    你直接更新模型里存储数据的的比如ArrayList,Vector里的数据,然后调用fireTableDataChanged就可以了,没必要删除所有行。
      

  3.   

    没错,我就是直接更新model里存储的数据,但是仍然有上面的问题:
      public synchronized void removeProcess() {
        cells = new ArrayList();
      }我会在view里调用removeProcess, cells是一个List,用来存储row的数据。
      

  4.   

    DefaultTableModel logTableModel;
    JTable table = new JTable(logTableModel);
    logTableModel.setRowCount(0);
      

  5.   

    调用一下JTable的revalidate()方法就可以了。如table.revalidate();