不用这么麻烦
DefaultTableColumnModel dcm = (DefaultTableColumnModel)table.getColumnModel();
TableColumn column = dcm.getColumn(1);
// Use the combo box as the editor in the "Next T" column.
DefaultCellEditor editor = new DefaultCellEditor(jcmbNextT);
column.setCellEditor(editor);
DefaultTableColumnModel dcm = (DefaultTableColumnModel)table.getColumnModel();
TableColumn column = dcm.getColumn(1);
// Use the combo box as the editor in the "Next T" column.
DefaultCellEditor editor = new DefaultCellEditor(jcmbNextT);
column.setCellEditor(editor);
package com.yteng.table;import java.awt.BorderLayout;
import java.awt.Component;
import java.util.EventObject;import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.JTable;
import javax.swing.event.CellEditorListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableModel;
public class SwingTable extends JPanel { public SwingTable(){
initComponent();
} private void initComponent()
{
JPanel contain = new JPanel(); setLayout(new BorderLayout());
JTable table = new JTable();
Object data[][] = {{new Integer(100),"China","world"}
,{new Integer(20),"earth","asdf"}
,{new Integer(30),"sdsd","uniasdfversal"}
,{new Integer(40),"earsdsth","asdf"}
,{new Integer(50),"earth","asdf"}
,{new Integer(60),"earth","asfsad"}
,{new Integer(70),"earth","universal"}
,{new Integer(80),"earth","universal"}
,{new Integer(90),"earth","asdfasdf"}
,{new Integer(100),"earth","asdfasdf"}
,{new Integer(800),"earth",""}
};
Object[] column = {"项目A","项目B","项目C"};
TheTableModuel moduel = new TheTableModuel(data,column);
//table.add
table.setModel(moduel);
//JTableHeader header = table.getTableHeader();
table.setDefaultRenderer(Boolean.class,new TheCellRender());
table.setDefaultEditor(Boolean.class,new TheCellEdit());
JScrollPane scrollPanel = new JScrollPane(table);
table.setCellSelectionEnabled(false);
table.setColumnSelectionAllowed(true);
table.setRowSelectionAllowed(true); add(scrollPanel,BorderLayout.CENTER);
//contain.add(scrollPanel);
//add(contain,BorderLayout.CENTER);
}
}class TheTableModuel extends DefaultTableModel
{ private Object[][]data;
private Object[] col;
private Class colClass[] ={Boolean.class,String.class,String.class};
public TheTableModuel(Object[][]data,Object col[])
{
super(data,col);
}
public Class getColumnClass(int c) { return colClass[c]; }
public boolean isCellEditable(int row,
int column)
{
return true;
}
public void setValueAt(Object value, int row, int col){
super.setValueAt(value, row, col);
}}class TheCellRender extends JLabel implements TableCellRenderer{
public TheCellRender()
{
//super(JScrollBar.HORIZONTAL);
}
/* (non-Javadoc)
* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) {
// TODO Auto-generated method stub if(arg1 instanceof Integer){
setText(((Integer)arg1).toString());
}
return this;
}
}class TheCellEdit extends JComboBox implements TableCellEditor
{
//private JScrollBar scroll = new JScrollBar();
int row;
int col;
private Integer cellValue;
public TheCellEdit()
{ //super(JScrollBar.HORIZONTAL);
//scroll.setMaximum(100);
//scroll.setMinimum(0);
//scroll.setBlockIncrement(1);
//scroll.setOrientation(JScrollBar.HORIZONTAL);
for(int i=0;i<1000;i++){
addItem(new Integer(i).toString());
} }
TableModel model = null;
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
this.row = row;
this.col = column;
model = table.getModel();
if(value instanceof Integer){
cellValue = (Integer)value;
//scroll.setValue(((Integer)value).intValue());
setSelectedItem(cellValue.toString());
}
return this;
} /* (non-Javadoc)
* @see javax.swing.CellEditor#getCellEditorValue()
*/
public Object getCellEditorValue() {
// TODO Auto-generated method stub
cellValue = new Integer((String)this.getSelectedItem());
return new Integer((String)this.getSelectedItem());
} /* (non-Javadoc)
* @see javax.swing.CellEditor#isCellEditable(java.util.EventObject)
*/
public boolean isCellEditable(EventObject arg0) {
// TODO Auto-generated method stub
return true;
} /* (non-Javadoc)
* @see javax.swing.CellEditor#shouldSelectCell(java.util.EventObject)
*/
public boolean shouldSelectCell(EventObject arg0) {
// TODO Auto-generated method stub
return true;
} /* (non-Javadoc)
* @see javax.swing.CellEditor#stopCellEditing()
*/
public boolean stopCellEditing() {
// TODO Auto-generated method stub
//setValue(scroll.getValue());
model.setValueAt(new Integer((String)this.getSelectedItem()), row, col);
return true;
} /* (non-Javadoc)
* @see javax.swing.CellEditor#cancelCellEditing()
*/
public void cancelCellEditing() {
// TODO Auto-generated method stub
cellValue = new Integer((String)this.getSelectedItem());
} /* (non-Javadoc)
* @see javax.swing.CellEditor#addCellEditorListener(javax.swing.event.CellEditorListener)
*/
public void addCellEditorListener(CellEditorListener arg0) {
// TODO Auto-generated method stub
//setValue(scroll.getValue());
} /* (non-Javadoc)
* @see javax.swing.CellEditor#removeCellEditorListener(javax.swing.event.CellEditorListener)
*/
public void removeCellEditorListener(CellEditorListener arg0) {
// TODO Auto-generated method stub }
}