⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbtablecontroller.java

📁 实习时做的人事系统
💻 JAVA
字号:
package com.personnel;

import java.util.Arrays;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

/**
 * 定义一个表格模型用于管理实际保存数据库数据的模型, 并实现表格的选择列排序功能
 */
public class DBTableController extends AbstractTableModel {

	private static final long serialVersionUID = 1L;

	private TableModel model = null;
	private Row[] rows = null;
	private int column;

	/**
	 * 构造一个表格排序模型
	 * 
	 * @param m实际保存数据库的表格模型
	 */
	public DBTableController(TableModel m) {
		this.model = m;

		int length = m.getRowCount();
		this.rows = new Row[length];
		for (int i = 0; i < length; i++) {
			this.rows[i] = new Row();
			this.rows[i].index = i;
		}
	}

	/**
	 * 对选择的列进行排序
	 * 
	 * @param c
	 *            要进行排序的列
	 */
	public void sort(int c) {
		this.column = c;
		Arrays.sort(this.rows);
		this.fireTableDataChanged();
	}

	/* 重写实现排序功能的三个方法 */
	public Object getValueAt(int r, int c) {
		return this.model.getValueAt(this.rows[r].index, c);
	}

	@Override
	public void setValueAt(Object value, int r, int c) {
		this.model.setValueAt(value, r, c);
	}

	@Override
	public boolean isCellEditable(int r, int c) {
		return this.model.isCellEditable(r, c);
	}

	/* 重写需要用到的其他方法 */
	public int getRowCount() {
		return this.model.getRowCount();
	}

	public int getColumnCount() {
		return this.model.getColumnCount();
	}

	@Override
	public Class getColumnClass(int c) {
		return this.model.getColumnClass(c);
	}

	@Override
	public String getColumnName(int c) {
		return this.model.getColumnName(c);
	}

	/*
	 * 这个内部类含有实际保存数据的模型的索引 并实现Comparable接口,用于对模型进行排序
	 */
	class Row implements Comparable<Row> {
		int index;

		public int compareTo(Row other) {
			Object a = DBTableController.this.model.getValueAt(this.index,
					DBTableController.this.column);
			Object b = DBTableController.this.model.getValueAt(other.index,
					DBTableController.this.column);

			if (a instanceof Comparable) {
				return ((Comparable) a).compareTo(b);
			} else {
				return a.toString().compareTo(b.toString());
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -