📄 tabledatabinder.java
字号:
package com.cownew.PIS.ui.commonUI.databind;
import java.lang.reflect.InvocationTargetException;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Vector;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.apache.commons.beanutils.PropertyUtils;
import com.cownew.PIS.framework.common.IValueObject;
import com.cownew.ctk.common.ExceptionUtils;
public class TableDataBinder
{
private JTable table;
private Class valueObjectClass;
private Set valueObjectSet;
private Map colIdToBindInfoMap;
/**
*
* @param table
* 表格
* @param valueObjectClass
* 值对象类型
*/
public TableDataBinder(JTable table, Class valueObjectClass)
{
super();
this.table = table;
this.valueObjectClass = valueObjectClass;
colIdToBindInfoMap = new HashMap();
}
public Set getValueObjectSet()
{
return Collections.unmodifiableSet(valueObjectSet);
}
public void setValueObjectSet(Set valueObjectSet)
{
this.valueObjectSet = valueObjectSet;
}
public void storeToVOSet()
{
if (valueObjectSet == null)
{
valueObjectSet = new HashSet();
}
// 清除原有数据
valueObjectSet.clear();
try
{
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
for (int rIndex = 0, rCount = tableModel.getRowCount(); rIndex < rCount; rIndex++)
{
IValueObject vo = (IValueObject) valueObjectClass.newInstance();
for (int cIndex = 0, cCount = tableModel.getColumnCount(); cIndex < cCount; cIndex++)
{
String colId = tableModel.getColumnName(cIndex);
TableBindInfo bindInfo = (TableBindInfo) colIdToBindInfoMap
.get(colId);
Object value = tableModel.getValueAt(rIndex, cIndex);
PropertyUtils.setProperty(vo, bindInfo.getFieldName(),
value);
}
valueObjectSet.add(vo);
}
} catch (InstantiationException e)
{
throw ExceptionUtils.toRuntimeException(e);
} catch (IllegalAccessException e)
{
throw ExceptionUtils.toRuntimeException(e);
} catch (InvocationTargetException e)
{
throw ExceptionUtils.toRuntimeException(e);
} catch (NoSuchMethodException e)
{
throw ExceptionUtils.toRuntimeException(e);
}
}
public void loadToTable()
{
DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
// 清除原有数据
tableModel.getDataVector().clear();
if (valueObjectSet == null)
{
return;
}
Iterator itVOList = valueObjectSet.iterator();
try
{
while (itVOList.hasNext())
{
IValueObject vo = (IValueObject) itVOList.next();
// 新建一行
Vector rowData = new Vector();
// 要按表格中的前后顺序来填充,所以要到map中去取
for (int i = 0, n = tableModel.getColumnCount(); i < n; i++)
{
String colId = tableModel.getColumnName(i);
TableBindInfo bindInfo = (TableBindInfo) colIdToBindInfoMap
.get(colId);
rowData.add(PropertyUtils.getSimpleProperty(vo, bindInfo
.getFieldName()));
}
tableModel.addRow(rowData);
}
} catch (IllegalAccessException e)
{
throw ExceptionUtils.toRuntimeException(e);
} catch (InvocationTargetException e)
{
throw ExceptionUtils.toRuntimeException(e);
} catch (NoSuchMethodException e)
{
throw ExceptionUtils.toRuntimeException(e);
}
}
public void registerBind(String columnId, String fieldName)
{
TableBindInfo info = new TableBindInfo(columnId, fieldName);
colIdToBindInfoMap.put(columnId, info);
}
}
class TableBindInfo
{
private String columnId;
private String fieldName;
public TableBindInfo(String columnId, String fieldName)
{
super();
this.columnId = columnId;
this.fieldName = fieldName;
}
public String getColumnId()
{
return columnId;
}
public String getFieldName()
{
return fieldName;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -