我只好用
void refreshTable(){
    createTable(v2);
    scroll.getViewport().removeAll();
    jPanel1.remove(scroll);
    scroll.getViewport().add(table);
    jPanel1.add(scroll,BorderLayout.CENTER);
    jPanel1.updateUI();
  }

解决方案 »

  1.   

    表视图并没有更新,你调用panel.repaint()当然没用
    在createTable(v2);后调用:fireTableChanged(e)
      

  2.   

    非常感谢
    可否详细解释以下repaint什么情况下有用呢?
    还有和UpdateUI的区别呢?
      

  3.   

    repaint是重绘当组件,一般你在改变了大小或是拖动窗口后会自动调用UpdateUI是重新设置当前组件的UI,Swing中几乎每一个组件都是通过JAVAX.SWING.PLAF包中对应的UI来负责显示效果的。Swing的组件都是以MVC模式来设计,象JTable这类的就是视图,它通过访问TableModel提供的数据来显示,而管理JTable的UI又是负责JTable以何种风格显示的工具