有一个jtable可以列出数据库中的信息,双击某一个单元格就可以更改里面的值,不过getValueAt(row,column)取到的是先前的值,再调用getValueAt(row,column)才能得到后改的值,怎样在更改后点击一个按钮,调用getValueAt(row,column)取到的就是改后的值呢?请高手帮帮忙,给点代码,详细解释一下,谢谢了

解决方案 »

  1.   

    你在哪里调用的getValueAt()?要光标从当前单元格移走(或按下ENTER)后才修改模型数据。最好给模型添加TableModelListener监听。如:jTable1.getModel().addTableModelListener(new javax.swing.event.TableModelListener() {            public void tableChanged(TableModelEvent e) {
                    System.out.println(jTable1.getValueAt(e.getLastRow(), e.getColumn()));
                }
            });
      

  2.   

    getValueAt
    public Object getValueAt(int row,
                             int column)返回 row 和 column 位置的单元格值。 
    注:列是以表视图的显示顺序指定的,而不以 TableModel 的列顺序指定的。这是一项重要的区别,因为在用户重新安排表中的列时,视图中给定索引处的列将更改。同时用户的操作永远不会影响模型的列顺序。 
    参数:
    row - 其值要被查询的行
    column - 其值要被查询的列 
    返回:
    指定单元格处的 Object视图中 column 位置的列名称,其中第一列为列 0
      

  3.   

    我的意思是:修改表中某一个单元格的值以后,点击“修改”按钮,用getValueAt(row,column)取到的值就是改过以后的值。
    我目前碰到的问题是:修改某一单元格的值,点击”修改“按钮,用getValueAt(row,column)取值,得到的是原来的值。我该怎么做?
      

  4.   

    最简单的办法:在你的按钮事件的actionPerformed方法里,调用JTable的validate方法就可以实现刷新了。
      

  5.   

    需要调用
    tbl.getCellEditor().stopCellEditing()
    让表格进入非编辑模式