首页>代码>java swing JTable的中级应用>/SwingComponents/src/com/learn/swing/jtable/celleditor/EditorTableTest.java
package com.learn.swing.jtable.celleditor;

import java.text.SimpleDateFormat;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

import com.learn.swing.jtable.abstracttablemodel.TableValues;
import com.learn.swing.jtable.cellrenderer.GenderRenderer;
import com.learn.swing.jtable.datepicker.TableDatePicker;

/**
 * GenderEditor类的工作流程:
	1)、调用TableCellEditor接口中的getTableCellEditorComponent()方法初始化编辑
	2)、编辑当前的单元格,再点击另一个单元格时,调用CellEditor中的stopCellEditing(),通过fireEditingStopped()调用到editingStopped()。
	3)、在editingStopped方法中,JTable调用getCellEditorValue()取回单元格的值,并且把这个值传递给TableValues(TableModel)的setValueAt()
 * @author Administrator
 * 方法调用顺序:
 *	isCellEditable
 *	getTableCellEditorComponent
 *	addCellEditorListener
 *	shouldSelectCell
 *	stopCellEditing
 *	getCellEditorValue --> TableModel.setValueAt()
 *	removeCellEditorListener
 *	fireEditingStopped
 */
@SuppressWarnings("serial")
public class EditorTableTest extends JFrame{
    
    public EditorTableTest(){
          setTitle("TableCellEditor");
          
          //添加表格数据
          TableValues tv =  new TableValues();
          JTable table= new JTable(tv);
          table.setRowHeight(30);
        
          TableColumnModel columnModel = table.getColumnModel();
          //获取“性别”列
          TableColumn genderColumn = columnModel.getColumn(TableValues.getGender());
          //获取“生日”列
          TableColumn birthColumn = columnModel.getColumn(TableValues.getBirth());
          
          //设置“性别”列的单元格渲染器(renderer)
          genderColumn.setCellRenderer(new GenderRenderer());
          //设置“性别”列的单元格编辑器(editor)
          genderColumn.setCellEditor(new GenderEditor()); 
          //设置“生日”列的单元格编辑器(日期格式在初始化时起作用)
          birthColumn.setCellEditor(new TableDatePicker(new SimpleDateFormat("yyyy-MM-dd")));
        
          //必须把table放入JScrollPane才会有列名出现
          JScrollPane jsp = new JScrollPane(table);
          getContentPane().add(jsp);
    }
    public static void main(String[] args) {
              EditorTableTest stt = new EditorTableTest();
              stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              stt.setSize(400,300);
              stt.setVisible(true);
              stt.setLocationRelativeTo(null);
    }
}
最近下载更多
wyx065747  LV67 4月7日
Demo1111  LV30 2021年12月12日
一个好人520  LV10 2021年9月29日
yangctz  LV24 2021年9月10日
ysc123  LV5 2021年7月8日
香菇肉饼汤  LV7 2020年5月21日
上善_若水  LV3 2020年2月19日
liaozhensy  LV1 2019年7月18日
yongzheng132  LV17 2019年6月21日
ty93pical  LV2 2019年4月22日
最近浏览更多
2252536772  LV21 11月9日
lcb813  LV1 7月1日
a318888331  LV12 5月30日
忧麦紫  LV17 3月2日
zkingzz 2021年12月21日
暂无贡献等级
Demo1111  LV30 2021年12月12日
thzhang  LV1 2021年12月7日
一个好人520  LV10 2021年9月29日
yangctz  LV24 2021年9月10日
qsyqa0  LV6 2021年9月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友