第一步:自定義一個類從JCombobox中繼承并實作TableCellEditor 接口
package tabledemo;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Component;
import java.util.EventObject;
import javax.swing.event.CellEditorListener;
public class GenderEditor extends JComboBox implements TableCellEditor {
public GenderEditor() {
super();
addItem("張三");
addItem("蕭六");
}
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) {
}
}
第二步:自定義一個類從JCombobox中繼承并實作TableCellRenderer 接口
package tabledemo;
import javax.swing.JComboBox;
import javax.swing.table.TableCellRenderer;
import java.awt.Component;
import javax.swing.JTable;
public class NameRenderer extends JComboBox implements TableCellRenderer {
public NameRenderer() {
super();
addItem("張三");
addItem("李四");
addItem("王五");
addItem("蕭六");
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 {
}
}
第三步:修改
TableColumn tc1=jTable1.getColumnModel().getColumn(0);
tc1.setCellRenderer(new NameRenderer());
JComboBox namebox=new JComboBox();
namebox.addItem("張三");
namebox.addItem("李四");
namebox.addItem("王五");
namebox.addItem("蕭六");
// tc1.setCellEditor(new DefaultCellEditor(namebox));
tc1.setCellEditor(new GenderEditor());
TableColumn tc=jTable1.getColumnModel().getColumn(1);
JComboBox sexbox=new JComboBox();
sexbox.addItem("男");
sexbox.addItem("女");
tc.setCellRenderer(new SexRenderer() );
tc.setCellEditor(new DefaultCellEditor(sexbox));