表格的渲染模型

package com.csdnsoft.tablemodel;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import com.csdnsoft.entity.Dept;

/**
 * 部门数据表格的显示模型(渲染模型)
 * @author guoyang
 */
public class DeptTableModel extends AbstractTableModel {
 private static final long serialVersionUID = -893747830254669146L;

 public static final String[] DEPT_TITLE = {"编号", "姓名", "描述", "创建时间"};
 
 private List<Dept> deptList = new LinkedList<Dept>(); //存放数据
 
 private DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
 @Override
 public String getColumnName(int column) { //重写获取表格列标题的方法
  return DEPT_TITLE[column];
 }

 /* (non-Javadoc)
  * @see javax.swing.table.TableModel#getColumnCount()
  */
 @Override
 public int getColumnCount() { //重写获取总列数的方法
  return DEPT_TITLE.length;
 }

 /* (non-Javadoc)
  * @see javax.swing.table.TableModel#getRowCount()
  */
 @Override
 public int getRowCount() { //重写获取总行数的方法
  return deptList.size();
 }

 /* (non-Javadoc)
  * @see javax.swing.table.TableModel#getValueAt(int, int)
  */
 @Override
 public Object getValueAt(int rowIndex, int columnIndex){//重写获取指定行指定列的单元格中的数
  Object result = null;
  
  Dept dept = deptList.get(rowIndex); //定位到行
  switch (columnIndex) {
  case 0:
   result = String.valueOf(dept.getId());
   break;
  case 1:
   result = dept.getName();
   break;
  case 2:
   result = dept.getDescription();
   break;
  case 3:
   Date ct = dept.getCreated_time();
   if(null != ct){
    result = df.format(ct);
   }else{
    result = "";
   }
   break;
  default:
   break;
  }
  return result;
  /*
  if(columnIndex == 0){
   return String.valueOf(dept.getDept_id());
  }else if(columnIndex == 1){
   return dept.getName();
  }else if(columnIndex == 2){
   return dept.getDescription();
  }else{
   return null;
  }*/
 }
  
 /**
  * 获取指定行中的对象
  */
 public Object getRow(int rowIndex){
  return deptList.get(rowIndex);
 }
 
 /**
  * 清空整个表格的数据
  */
 public void removeAll(){
  int size = deptList.size();
  for(int i = size - 1; i >= 0; i--){
   delete(i);
  }
 }
 
 /**
  * 往数据表格模型中添加一行数据
  * @param dept
  */
 public void add(Dept dept){
  deptList.add(dept);
  fireTableRowsInserted(deptList.size()-1, deptList.size());//通知表格模型中指定范围已经插入数据
 }
 
 /**
  * 删除表格模型中的指定行
  * @param rowIndex 行的索引值(从0开始的值)
  */
 public void delete(int rowIndex){
  deptList.remove(rowIndex);
  
  fireTableRowsDeleted(rowIndex, rowIndex+1); //通知监听器
 }
 
 /**
  * 更新表格模型中指定行的数据
  * @param rowIndex 行的索引值
  * @param dept 新的部门数据
  */
 public void update(int rowIndex, Dept dept){
  deptList.remove(rowIndex);
  deptList.add(rowIndex, dept);
  
  fireTableRowsUpdated(rowIndex, rowIndex+1); //通知监听器
 }
 
 public void update(Dept dept){
  int size = getRowCount();
  int rowIndex = -1;
  for(int i = 0; i < size; i++){
   Dept temp = (Dept)getRow(i);
   if(temp.getId() == dept.getId()){
    rowIndex = i;
    break;
   }
  }
  
  if(rowIndex >= 0){
   update(rowIndex, dept);
  }
 }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

//调用以上的方法

 public void initJTable(){
  dtm = new DeptTableModel();
  jtable = new JTable(dtm);
  jtable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选模式
  
  JScrollPane sp = new JScrollPane(jtable,
    JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
  
  this.add(sp, BorderLayout.CENTER);
 }

 

dtm.removeAll(); //把原来的数据清空
    
    for(int i = 0; i < list.size(); i++){
     dtm.add(list.get(i));
    }

 

 


你可能感兴趣的:(Date,String,object,null,delete,Class)