以下为自定义的表格模板,贴上代码
package com.eidos.me.view;
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import org.apache.commons.lang3.StringUtils;
public class TableModelProxy extends AbstractTableModel {
/**
*
*/
private static final long serialVersionUID = -3295581072864170310L;
private String[] columnNames;
private List<Object[]> data;
public void setColumnNames(String[] columnNames) {
this.columnNames = columnNames;
}
public void setData(List<Object[]> data) {
this.data = data;
}
public TableModelProxy(String[] columnNames, List<Object[]> data) {
this.columnNames = columnNames;
this.data = data;
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return getValueAt(0, columnIndex).getClass();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// if (rowIndex < columnNames.length - 1) {
// return false;
// } else {
// return true;
// }
return true;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
data.get(rowIndex)[columnIndex] = aValue;
fireTableCellUpdated(rowIndex, columnIndex);
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data.get(rowIndex)[columnIndex];
}
public int getColumnIndexByColumnName(String columnName) {
int index = -1;
for (int i = 0; i < columnNames.length; i++) {
if (StringUtils.equalsIgnoreCase(columnName, columnNames[i])) {
index = i;
break;
}
}
return index;
}
public void selectAllOrNull(boolean value) {
for (int index = 0; index < getRowCount(); index++) {
this.setValueAt(value, index, 0);
}
}
public List getSelectedCheckBoxData() {
List result = new ArrayList<Object>();
for (int i = 0; i < getRowCount(); i++) {
boolean isSelected = (boolean) data.get(i)[0];
if (isSelected) {
Object[] target = data.get(i);
result.add(target);
}
}
return result;
}
public List getSelectedRowIndex() {
List result = new ArrayList<Integer>();
for (int i = 0; i < getRowCount(); i++) {
boolean isSelected = (boolean) data.get(i)[0];
if (isSelected) {
result.add(i);
}
}
return result;
}
public void removeAllData() {
this.data.clear();
}
public void addOneLine() {
Object[] obj=new Object[columnNames.length];
if(StringUtils.equalsIgnoreCase("全选", columnNames[0]) || StringUtils.equalsIgnoreCase("checkBox", columnNames[0])) {
obj[0]=false;
}else {
obj[0]="";
}
for(int i=1;i<obj.length;i++) {
obj[i]="";
}
this.data.add(obj);
}
public void deleteByIndex(int index) {
this.data.remove(index);
}
public void deleteByListIndex(List<Integer> list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 1; j < list.size() - i; j++) {
Integer a;
// 从大到小 排列
if ((list.get(j - 1)).compareTo(list.get(j)) < 0) { // 比较两个整数的大小
a = list.get(j - 1);
list.set((j - 1), list.get(j));
list.set(j, a);
}
}
}
for(int m=0;m<list.size();m++) {
// List<Integer> 注意remove的是 下标 还是其中的元素
int index=list.get(m);
// 注意remove的是 下标 而不是其中的元素
this.data.remove(index);
}
}
}