我已经用了:
addNotify();
jTable.revalidate();
jTable.repaint();
jTable.updateUI();
可是不能刷新。
我的是 jtable是:
class TableModel extends AbstractTableModel

解决方案 »

  1.   

    这样嘛。
    按钮监听器执行actionPerformed方法,该方法中调用JTable所在类的方法,这个方法中,调用tableModel的fireTableStructureChanged()方法就可以了。
    当然,必须先定义tableModel。如下:
    ArrayList cards=new ArrayList();
    cards=getCardFromDatabase();    //从数据库获取数据
    myModel=new AbstractTableModel(){
             public int getColumnCount(){
              return card_title.length;
             }
             public int getRowCount(){
              if(cards==null||cards.size()==0)
                  return 0;
              return cards.size();
             }
             public Object getValueAt(int row,int column){
              if(cards==null||cards.size()==0)
                  return "";
              return ((ArrayList)cards.get(row)).get(column);
             }
             public String getColumnName(int column){
             return card_title[column];
             }
             public Class getColumnClass(int col){
             return getValueAt(0,col).getClass();
             }
             public boolean isCellEditable(int row,int column){
              return false;
             }
         };
    JTable cardTable=new JTable(cardModel);
         JScrollPane spane=new JScrollPane(cardTable);
         panel.add(spane,BorderLayout.CENTER);//在主程序中,有个方法,调用这个方法就可以刷新了
    public void listCards(){
        cards=getNewCardData();
        myModel.fireTableStructureChanged();
    }