给你给例子:
一共两个文件:
***********************
EachRowEditorExample.javaimport java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import jp.gr.java_conf.tame.swing.table.*;public class EachRowEditorExample extends JFrame {
  public EachRowEditorExample(){
    super("EachRow Editor Example");
       
    DefaultTableModel dm = new DefaultTableModel();
    dm.setDataVector(
      new Object[][]{{"Name"  ,"MyName"},
                     {"Gender","Male"}},
      new Object[]{"Column1","Column2"});    JTable table = new JTable(dm);
    JComboBox comboBox = new JComboBox();
    comboBox.addItem("Male");
    comboBox.addItem("Female");
    comboBox.addComponentListener(new ComponentAdapter() {
      public void componentShown(ComponentEvent e) {
        final JComponent c = (JComponent)e.getSource();
        SwingUtilities.invokeLater(new Runnable() {
          public void run () {
            c.requestFocus();
            System.out.println(c);
            if (c instanceof JComboBox) {
              System.out.println("a");
            }
          }
        });
      }
    });    EachRowEditor rowEditor = new EachRowEditor(table);
    rowEditor.setEditorAt(1, new DefaultCellEditor(comboBox));
    table.getColumn("Column2").setCellEditor(rowEditor);    JScrollPane scroll = new JScrollPane(table);
    getContentPane().add( scroll , BorderLayout.CENTER);
    setSize( 400, 100 );
    setVisible(true);
  }  public static void main(String[] args) {
    EachRowEditorExample frame = new EachRowEditorExample();
    frame.addWindowListener( new WindowAdapter() {
      public void windowClosing( WindowEvent e ) {
        System.exit(0);
      }
    });
  }
}
  
********************
EachRowEditor.javaimport java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;public class EachRowEditor implements TableCellEditor {
  protected Hashtable editors;
  protected TableCellEditor editor, defaultEditor;
  JTable table;  /**
   * Constructs a EachRowEditor.
   * create default editor 
   *
   * @see TableCellEditor
   * @see DefaultCellEditor
   */ 
  public EachRowEditor(JTable table) {
    this.table = table;
    editors = new Hashtable();
    defaultEditor = new DefaultCellEditor(new JTextField());
  }
  
  /**
   * @param row    table row
   * @param editor table cell editor
   */
  public void setEditorAt(int row, TableCellEditor editor) {
    editors.put(new Integer(row),editor);
  }
  
  public Component getTableCellEditorComponent(JTable table,
      Object value, boolean isSelected, int row, int column) {
    //editor = (TableCellEditor)editors.get(new Integer(row));
    //if (editor == null) {
    //  editor = defaultEditor;
    //}
    return editor.getTableCellEditorComponent(table,
             value, isSelected, row, column);
  }  public Object getCellEditorValue() {
    return editor.getCellEditorValue();
  }
  public boolean stopCellEditing() {
    return editor.stopCellEditing();
  }
  public void cancelCellEditing() {
    editor.cancelCellEditing();
  }
  public boolean isCellEditable(EventObject anEvent) {
    selectEditor((MouseEvent)anEvent);
    return editor.isCellEditable(anEvent);
  }
  public void addCellEditorListener(CellEditorListener l) {
    editor.addCellEditorListener(l);
  }
  public void removeCellEditorListener(CellEditorListener l) {
    editor.removeCellEditorListener(l);
  }
  public boolean shouldSelectCell(EventObject anEvent) {
    selectEditor((MouseEvent)anEvent);
    return editor.shouldSelectCell(anEvent);
  }
  
  protected void selectEditor(MouseEvent e) {
    int row;
    if (e == null) {
      row = table.getSelectionModel().getAnchorSelectionIndex();
    } else {
      row = table.rowAtPoint(e.getPoint());
    }
    editor = (TableCellEditor)editors.get(new Integer(row));
    if (editor == null) {
      editor = defaultEditor;
    }
  }
}