swing table渲染


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值