TableCellEditor的
public boolean stopCellEditing()
{
}
不过有时不好使
其实如果你关注的是单元格里值的改变而不关心停止编辑这个动作的话
TableModel的setValueAt()是比较简单的选择。

解决方案 »

  1.   

    在JDK的例子中,有完整的演示代码。
    先找到SwingSet2.jar所在的目录,
    运行下面的代码,就可以了。
    java -jar SwingSet2.jar
      

  2.   

    看看这段代码,能不能给你写启发
    主要是继承了JTable,然后对editingStopped(ChangeEvent e)进行了扩展,但原来的功能还要保留
    import javax.swing.*;
    import javax.swing.event.*;class MainFrame extends JFrame 
    {
    private MyTable myTable = new MyTable(5, 4); MainFrame()
    {
    getContentPane().add(myTable);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(400, 300);
    setVisible(true);
    }
    }class MyTable extends JTable
    {
    MyTable(int numRows, int numColumns)
    {
    super(numRows, numColumns);
    } public void editingStopped(ChangeEvent e)
    {
    int row = getEditingRow();
    int col = getEditingColumn();
    super.editingStopped(e);
    doSomeThing(row, col);
    } private void doSomeThing(int row, int col)
    {
    String value = (String)getValueAt(row, col);
    if(col < getColumnCount()-1)
    setValueAt(value, row, col+1);
    else
    setValueAt(value, row, 0);
    }
    }public class testTable
    {
    public static void main(String[] args)
    {
    new MainFrame();
    }
    }
      

  3.   

    问题已经解决,是通过观察jtabel的model数据是否发生变化事件监听
    JTable table = new JTable();
    table.getModel().addTableModelListener(new TableModelListener() {
                    public void tableChanged(TableModelEvent e) {
                    }
                });
    还是谢谢各位帮忙