package com.sky.swing;
import javax.swing.DefaultCellEditor;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
/**
?* 在JTable中添加下拉
?* @author sky
?*
?*/
public class MyComboBox {
?/**
? * @param args
? */
?public static void main(String[] args) {
??MyTable mytable=new MyTable();
??DefaultTableModel model=(DefaultTableModel) mytable.getModel();
??model.addColumn("姓名",new Object[]{"向小文","刘晓明"});
??model.addColumn("语文", new Object[] { "100","99" });
???? model.addColumn("数学", new Object[] { "98","90" });
???? model.addColumn("复选框", new Object[] { false,false });
???
????
???? String[] values = new String[] { "90", "92", "93" };
???? mytable.setComboCell(0, 1, new MyComboBoxEditor(values));//第一行的第二例为下拉
????
???? JScrollPane jp=new JScrollPane(mytable);
???? jp.setViewportView(mytable);
???? jp.setSize(400,300);
???? JFrame jf=new JFrame();
???? jf.getContentPane().add(jp);
???? jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
???? jf.setSize(400,300);
???? jf.setVisible(true);
?}
}
//----------------表体table------------------
class MyTable extends JTable{
?int myRow=-1,myCol=-1;
?TableCellEditor myEditor;//边框编辑器
?
?public void setComboCell(int row,int col,TableCellEditor editor){
??this.myRow=row;
??this.myCol=col;
??this.myEditor=editor;
?}
?
?public TableCellEditor getCellEditor(int row,int col){
??if(row==myRow&&col==myCol&&myEditor!=null)
???return myEditor;
??return super.getCellEditor(row,col);
?}
?
? /**
?? * 返回数据类型
?? */
? public Class getColumnClass(int myCol) {
?? return getValueAt(0, myCol).getClass();
? }
}
//-----------------------下拉编辑器-----------------------
class MyComboBoxEditor extends DefaultCellEditor{
?
?private static final long serialVersionUID = 1L;
?public MyComboBoxEditor(JCheckBox checkBox) {
??super(checkBox);
?}
?public MyComboBoxEditor(String[] value){
??super(new JComboBox(value));
?}
}
class MyCheckBoxEditor extends DefaultCellEditor{
?public MyCheckBoxEditor(JCheckBox checkBox) {
??super(checkBox);
?}
?
?public MyCheckBoxEditor() {
??super(new JCheckBox());
?}
?
?/**
? *
? */
?private static final long serialVersionUID = 1L;
?
}