Step 1: Customize a class to inherit from JCombobox and implement the TableCellEditor Interface
Package tabledemo;
Import javax. swing .*;
Import javax. swing. table .*;
Import java. awt. Component;
Import java. util. EventObject;
Import javax. swing. event. CellEditorListener;
/**
* <P> Title: </p>
*
* <P> Description: </p>
*
* <P> Copyright: Copyright (c) 2007 </p>
*
* <P> Company: </p>
*
* @ Author not attributable
* @ Version 1.0
*/
Public class GenderEditor extends JComboBox implements TableCellEditor {
Public GenderEditor (){
Super ();
AddItem ("Zhang San ");
AddItem ("Xiao six ");
}
Public Component getTableCellEditorComponent (JTable table, Object value,
Boolean isSelected, int row,
Int column ){
// Boolean isMale = (Boolean) value). booleanValue ();
// SetSelectedIndex (isMale? 0: 1 );
Return this;
}
Public void cancelCellEditing (){
}
Public boolean stopCellEditing (){
Return true;
}
Public Object getCellEditorValue (){
Return null;
}
Public boolean isCellEditable (EventObject anEvent ){
Return true;
}
Public boolean shouldSelectCell (EventObject anEvent ){
Return false;
}
Public void addCellEditorListener (CellEditorListener l ){
}
Public void removeCellEditorListener (CellEditorListener l ){
}
}
Step 2: Customize a class to inherit from JCombobox and implement the TableCellRenderer Interface
Package tabledemo;
Import javax. Swing. jcombobox;
Import javax. Swing. Table. tablecellrenderer;
Import java. AWT. component;
Import javax. Swing. jtable;
/**
* <P> title: </P>
*
* <P> Description: </P>
*
* <P> copyright: Copyright (c) 2007 </P>
*
* <P> company: </P>
*
* @ Author not attributable
* @ Version 1.0
*/
Public class namerenderer extends jcombobox implements tablecellrenderer {
Public namerenderer (){
Super ();
Additem ("Zhang San ");
Additem ("Li Si ");
Additem ("Wang Wu ");
Additem ("Xiao six ");
Try {
Jbinit ();
} Catch (exception ex ){
Ex. printstacktrace ();
}
}
Public component gettablecellrenderercomponent (jtable table, object value,
Boolean isselected, Boolean hasfocus, int row, int column ){
This. setselecteditem (value );
Return this;
}
Private void jbinit () throws exception {
}
}
Step 3: Modify
Tablecolumn TC1 = jtable1.getcolumnmodel (). getcolumn (0 );
Tc1.setcellrenderer (New namerenderer ());
Jcombobox namebox = new jcombobox ();
Namebox. additem ("James ");
Namebox. additem ("Li Si ");
Namebox. additem ("Wang Wu ");
Namebox. additem ("Xiao six ");
// Tc1.setcelleditor (New defaultcelleditor (namebox ));
Tc1.setcelleditor (New gendereditor ());
Tablecolumn Tc = jtable1.getcolumnmodel (). getcolumn (1 );
Jcombobox sexbox = new jcombobox ();
Sexbox. additem ("male ");
Sexbox. additem ("female ");
TC. setcellrenderer (New sexrenderer ());
TC. setcelleditor (New defaultcelleditor (sexbox ));