这样建表来代替原来的表:
  DefaultTableModel tmodel=new DefaultTableModel(new Vector(),columnNames);
Jtable table = new Jtable(tmodel);
修改时只修改tmodel就可以了.

解决方案 »

  1.   

    赋值之后需要调用fireTableCellUpdated(row,column)或者fireTableDataUpdated()。
      

  2.   

    直接使用JTable.setValueAt() 就可以了。
      

  3.   

    谢谢  各位
    可能我说得不是很清楚。
    我是想从表输入数据再传到数组,但正在编辑的那个cell的数据没有传进去 。
    我用DefaultTableModel1.getValueAt()取所有的数据
    但正在编辑的那个cell得到的是改动之前的(我先用setValueAt对每个cell赋了初值)。
    fireTableCellUpdated(row,column) 好像不起作用。
      

  4.   

    表格的编辑器在stopCellEditing之前是不把当前的值保存进去的.所以你点击按钮是原来的旧制.但是当你编辑完cell数据后,再别的cell点击时,Jtable调用了刚才你所编辑单元格编辑器的stopCellEditing方法,把编辑后的值保存进去了.你可以通过jTable的isEditing方法判断表格是否正在编辑,如果为true.你可以通过getEditingColumn和getEditingRow获取当前编辑的单元格的位置.然后通过getCellEditor(row,col)获取正在编辑的编辑器,然后调用她的stopCellEditing方法就差不多了.仔细看看jdk帮助吧.
    祝你好运.大体的流程如下:
    if(jTable1.isEditing()){
       int row = jTable1.getEditingRow();
       int col = jTable1.getEditingColumn();
       jTable1.getCellEditor(row,col).stopCellEditing();
    }