首先,我写了一个类继承于AbstractedTableModel,然后重写了6个方法
然后用JScrollPane实例化了一个对象
问题是这样,我是直接对数据库进行操作,
插入数据,发现已经插入成绩,直接将数据从数据库中读出更新了JTable
发现,当运行时,假设JTable有2行数据,我增加一行数据,在数据库中有数据,然而在JTable中没有显示出来
然后我去删除两行中的一行数据,发现,删除那行数据之后,前面增加的那行数据显示出来了.
意思就是我初始化的时候是显示2行数据,后面增加行数时,它不能增加
当我删除某一行之后,它能再显示出来,但运行过程中始终无法超过初始化时的行数(像我举例中说的2行)求教大牛了.俺初学者!package tools;import javax.swing.table.AbstractTableModel;public class StuTable extends AbstractTableModel {

public StuTable(){

}

@Override
public int getColumnCount() {
// TODO Auto-generated method stub
return this.tableHead.size();
} @Override
public int getRowCount() {
// TODO Auto-generated method stub
return this.tableData.size();
} @Override
public Object getValueAt(int row, int col) {
// TODO Auto-generated method stub
return this.tableData.get(row).get(col);
}

public String getColumnName(int col){
return this.tableHead.get(col);
}

@Override
public Class<?> getColumnClass(int col) {
// TODO Auto-generated method stub
return this.getValueAt(0, col).getClass();
} @Override
public boolean isCellEditable(int row, int col) {
// TODO Auto-generated method stub
return false;
} @Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// TODO Auto-generated method stub
this.tableData.get(rowIndex).set(columnIndex, aValue);
}然后用JScrollPane实例化了一个对象public class BrowsePanel extends JScrollPane { private StuTable tableModel = null;
private JTable table = null;
private JScrollPane pane = null;

public BrowsePanel(){
tableModel = new StuTable();
table = new JTable();
table.setModel(tableModel);
this.setBorder(BorderFactory.createTitledBorder("浏览学生信息"));
this.setViewportView(table);
this.updateUI();
}

public void freshUI(){
table.setModel(tableModel);
this.updateUI();
} public StuTable getTableModel() {
return tableModel;
} public JTable getTable() {
return table;
}

}

解决方案 »

  1.   

        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
            // TODO Auto-generated method stub
            this.tableData.get(rowIndex).set(columnIndex, aValue);
            this.fireTableCellUpdated(rowIndex,columnIndex);
        }你可以看看 jdk 中 DefaultTableModel是怎么写的。
      

  2.   

    有的,有重新设置模型!    public void freshUI(){
            table.setModel(tableModel);
            this.updateUI();
        }
      

  3.   

    先看过 src.zip 里的 javax/swing/table/DefaultTableModel.java 再写自己的 TableModel实现。
      

  4.   

    我已经解决了.原来updateUI()是不够的
    table.invalidate();
    table.repaint();
    需要再加上这两句