重新调用一次jTable.setModel(dataModel);

解决方案 »

  1.   

    当数据更新时,应该调用TableDataModel的fireTableChanged方法来发出事件,TableView会捕获这个事件并自动更新显示。
      

  2.   

    举例:
        class MyModel extends javax.swing.table.AbstractTableModel
        {
            int rowCount = 10;
            int columnCount = 7;
            int currentPageNO=1;
            int totalPage=10;
            String names[] = 7;
            Object[][] content;
            public MyModel()
            {
                refreshData();
            }
            public void refreshData()
            {
                content=getData((currentPageNO-1)*rowCount,rowCount);
                this.fireTableDataChanged();
            }
            private Object[][] getData(int startPos,int length)
           //此处应该换成您自己的获取数据的方法
           {
                Object[][] data=new Object[length][7];
                String[] criteria = new String[7];
                try
                {
                    int[] keyArray = DB.find(criteria);
                    int total=keyArray.length/rowCount+1;
                    if (keyArray.length%rowCount==0)
                        total--;
                    setTotalPageCount(total);
                    if (startPos>=keyArray.length)
                    {
                        return data;
                    }
                    if (length>keyArray.length-startPos)
                        length=keyArray.length-startPos;
                    for(int i=0;i<length;i++)
                    {
                        data[i] = DB.read(keyArray[startPos+i]);
                    }
                }catch(Exception ex)
                {
                    ex.printStackTrace();
                }
                return data;
            }
            public int getRowCount()
            {
                return rowCount;
            }
            public int getColumnCount()
            {
                return columnCount;
            }
            public String getColumnName(int column)
            {
                return names[column];
            }
            public Object getValueAt(int row,int column)
            {
                return content[row][column];
            }
            public Class getColumnClass(int columnIndex)
            {
                return getValueAt(0,columnIndex).getClass();
            }
            public boolean isCellEditable(int row,int column)
            {
                return true;
            }
            public void setValueAt(Object value,int row,int column)
            {
                content[row][column] = value;
                this.fireTableCellUpdated(row,column);
            }
        }