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

📄 databasetablemodel.java

📁 基于corba的资源池,实现了实例池供客户端调用,并且实例池对实例的分配采用策略模式支持随即抽取,最近使用和循环抽取三个不同策略.(在visibroke下面开发的)
💻 JAVA
字号:
package database;

import java.sql.Types;
import javax.swing.table.AbstractTableModel;

import Bank.AccountInfo;

/**
 * 描述数据库字段信息
 *
 */
class DatabaseTableColumn{
	private String name;              //表格列名(列标题)
	private String field;             //表列所对应的字段名称
	private Class type;               //表列的类型所属的类
	private int width;               //表列宽度
	private int sqlType;             //表列类型在Sql中的编码值
	
	public DatabaseTableColumn(String name,String field,Class type,int width,int sqlType){
		this.name = name;
		this.field = field;
		this.type = type;
		this.width = width;
		this.sqlType = sqlType;
	}
	
	public String getName(){return name;}
	public String getField(){return field;}
	public Class getType(){return type;}
	public int getWidth(){return width;}
	public int getSqlType(){return sqlType;}
}

/**
 * 数据库的表格所使用的数据模型
 *
 */	
public class DatabaseTableModel extends AbstractTableModel{
	/**
	 * serialVersionUID不知道是什么!
	 */
	private static final long serialVersionUID = 1L;
	protected static DatabaseTableColumn[] columns;        //表列信息
	protected int keyCol;                                  //关键字段所在的列
	//表格中的数据,ArrayList的元素类型是Object[],长度为columnNames.length
	protected AccountInfo[] data;
	//指明使用该模型的表格是否可修改表格单元,关键字段所在的列总是不可修改的
	protected boolean modifiable;
	protected String keyField;
		
	public DatabaseTableModel(AccountInfo[] data,/*DatabaseTableColumn[] columns,String keyField,*/boolean modifiable){
		this.data = data;
		columns = initializeColumns();
		keyField = getKeyField();
		//this.columns = columns;
		keyCol = 0;
		for(int i = 0;i<columns.length;i++){
			if(keyField.equals(columns[i].getField())){keyCol = i;break;}
		}
		this.modifiable = modifiable;
	}
	
	/**
	 * 以下方法是在类AbstactTableModel定义的抽象方法,必须重定义它们
	 */
	//返回表列数
	public int getColumnCount(){return columns.length;}
	//返回表列名称
	public String getColumnName(int col){return columns[col].getName();}
	//返回表列数据所属的类型
	public Class getColumnClass(int col){return columns[col].getType();}
	//返回列的表格单元是否可修改
	public boolean isCellEditable(int row,int col){
		if(col == keyCol)return false;
		else return modifiable;
	}
	//返回某个单元的数据
	public Object getValueAt(int row,int col){
		Object rowData = null;
		if(col ==0){
			rowData = data[row].id;
		}else if(col == 1){
			rowData = data[row].name;
		}else if (col == 2){
			rowData = Float.valueOf(data[row].balance);
		}
		return rowData;
	}
	//设置某个表格单元的数据
	public void setValueAt(Object value,int row,int col){
		//Object rowData = data[row];
		//data[row] = (AccountInfo)value;
		if(col ==0){
			data[row].id = (String)value;
		}else if(col ==1){
			data[row].name = (String)value;
		}else if(col == 2){
			data[row].balance = ((Float)value).floatValue();
		}
		fireTableCellUpdated(row,col);
	}
	//返回表行数
	public int getRowCount(){return data.length;}
	//返回表格第col列所对应的数据字段名称
	public String getFieldName(int col){return columns[col].getField();}
	//返回关键字段在表格中的列下标
	public int getKeyFieldColumn(){return keyCol;}
	//返回关键字段值为keyId的记录在表格中的行下标
	public int getKeyIdRow(Object keyId){
		/*
		for(int i = 0;i<data.length;i++){
			Object rowData = data[i];
			if(rowDate..equals(keyId))return i;
		}
		*/
		return 0;
	}
	//增加一行数据
	public void addRow(Object[] rowData){
		//data.add(rowData);
		//fireTableRowsInserted(data.size(),data.size());
	}
	
	/**
	 * 初始化数据表的字段信息
	 * @return 返回设好的列表
	 */
	public static DatabaseTableColumn[] initializeColumns(){
		columns = new DatabaseTableColumn[3];
		try{
			Class StringClass = Class.forName("java.lang.String");
			Class FloatClass = Class.forName("java.lang.Float");
			columns[0] = new DatabaseTableColumn("id","id",StringClass,10,Types.VARCHAR);
			columns[1] = new DatabaseTableColumn("name","name",StringClass,10,Types.VARCHAR);
			columns[2] = new DatabaseTableColumn("balance","balance",FloatClass,2,Types.FLOAT);
		}catch(ClassNotFoundException exc){
			exc.printStackTrace();
		}
		return columns;
	}
	public String getKeyField(){return "id";}
}

⌨️ 快捷键说明

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