public class SimpleTableModel extends AbstractTableModel {
private String[] columns;// 表头数组
private List valueObjs = new ArrayList();// 表格值列表,为Object[]对象
private boolean cellEditabled = false;// 列是否可以修改
private boolean Editabled = false;// 哪些列可以修改
public SimpleTableModel(String[] columns, List valueObjs) {
this.columns = columns;
this.valueObjs = valueObjs;
}
/**
* 获取总行数
*
* @return 总行数
*/
public int getRowCount() {
return getValueObjs().size();
}
/**
* 获取总列数
*
* @return 总列数
*/
public int getColumnCount() {
return columns.length;
}
/**
* 得到指定列的列名
*
* @param column
* 指定列
* @return 指定列的列名
*/
public String getColumnName(int column) {
return columns[column];
}
/**
* 指定单元格是否可以编辑
*
* @param row
* 行序号
* @param col
* 列序号
* @return true or false
*/
public boolean isCellEditable(int r, int c) {
// if (Editabled) {
// return (c == 0) || (c == 2);
// }
return false;
}
public void setCellEdit(boolean b) {
Editabled = b;
}
/**
* 设置单元格是否可以编辑
*
* @param b
* true or false
*/
public void setCellEditable(boolean b) {
cellEditabled = b;
}
/**
* 获得指定单元格的值
*
* @param row
* 行序号
* @param col
* 列序号
* @return 指定单元格的值
*
*/
public Class getColumnClass(int c) {
if(c == MainFramePanel._state){
return MyCellRender.class;
}
return super.getClass();
}
public Object getValueAt(int row, int col) {
if (getValueObjs().size() <= row) {
return null;
}
return ((Object[]) getValueObjs().get(row))[col];
}
/**
* 设置指定单元格的值
*
* @param row
* 行序号
* @param col
* 列序号
*/
public void setValueAt(Object value, int row, int col) {
if (getValueObjs().size() <= row) {
return;
}
((Object[]) getValueObjs().get(row))[col] = value;
fireTableCellUpdated(row, col);
}
/**
* 获得指定值的行序号
*
* @parma value 指定值
* @return 行序号
*/
public int findRow(Object value) {
for (int i = 0; i < valueObjs.size(); i++) {
if (((Object[]) valueObjs.get(i))[0].equals(((Object[]) value)[0])) {
return i;
}
}
return -1;
// return getValueObjs().indexOf(value);
}
/**
* 在最后增加一行
*
* @parma value 指定值
*/
public void appendRow(Object value) {
getValueObjs().add(value);
fireTableDataChanged();
}
/**
* 删除指定行
*
* @param row
* 行序号
*/
public void removeRow(int row) {
getValueObjs().remove(row);
fireTableDataChanged();
}
/**
* 清空整个表格
*/
public void clean() {
valueObjs = new ArrayList();
fireTableDataChanged();
}
/**
* 取出所有数据
*/
public List getValueObjs() {
return valueObjs;
}
/**
* 重新加载表格数据
*
* @param values
* 新的数据
*/
public void reloadTable(List values) {
valueObjs.removeAll(valueObjs);
valueObjs.addAll(values);
fireTableDataChanged();
}
}