Java Swing之Jtable:自定义tableModel

以下为自定义的表格模板,贴上代码

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);
		}
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值