定义自己的表模型,把第三咧,禁止手动编辑,
把第三列的getValueAt,返回列1+列2的值,即可按下回车或跳到其他单元格,第三列就会自动累加前两列import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;public class TableCellRenderTest1
{  public static void main(String[] args)
   {  JFrame frame = new TableCellRenderFrame();
      frame.show();
   }
}
class PlanetTableModel extends AbstractTableModel
{  public String getColumnName(int c)
   {  return columnNames[c];   }
   
   public Class getColumnClass(int c)
   {  return cells[0][c].getClass();   }
   
   public int getColumnCount()
   {  return cells[0].length;   }
   
   public int getRowCount()
   {  return cells.length;   }   public Object getValueAt(int r, int c)
   {  if(c!=2)
    return cells[r][c];
      else{
       int temp = ((Integer)cells[r][0]).intValue()+((Integer)cells[r][1]).intValue();      
       return new Integer(temp);
      }
   }   public void setValueAt(Object obj, int r, int c)
   {  cells[r][c] = obj;   }   public boolean isCellEditable(int r, int c)
   {  //if you want to edit column 3, you should always return true
      return c!=3;   
   }
   
   private Object[][] cells =
      {  { new Integer(1), new Integer(31), new Integer(32)},
         { new Integer(11), new Integer(38), new Integer(49) },
         { new Integer(32), new Integer(46), new Integer(78) },
         { new Integer(44), new Integer(71), new Integer(115) },
      };   private String[] columnNames =
      {  "N1", "N2", "N1+N2"  };
}class TableCellRenderFrame extends JFrame
{  
   public TableCellRenderFrame()
   {  setTitle("TableCellRenderTest");
      setSize(300, 200);
      addWindowListener(new WindowAdapter()
         {  public void windowClosing(WindowEvent e)
            {  System.exit(0);
            }
         } );      TableModel model = new PlanetTableModel();
      JTable table = new JTable(model);
          
      // show table      
      Container contentPane = getContentPane();
      contentPane.add(new JScrollPane(table), BorderLayout.CENTER);
      contentPane.add(label, BorderLayout.NORTH);
      
   }   }