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

📄 userloaderpanel.java

📁 此文档针对开发人员和测试人员。第二章对软件进行了全面的描述。第三章对接口进行了分析。第四章对软件实现的功能进行概述。第五章对软件后续开发实现提出的要求。第六章提出其他一些在软件开发过程中需要注意的问题
💻 JAVA
字号:
package com.ciash.bms.gui.search.loader;

import javax.swing.DefaultListSelectionModel;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.JPopupMenu;
import java.util.HashMap;
import java.awt.BorderLayout;

import com.ciash.bms.gui.selecter.UserSelecter;
import com.ciash.bms.gui.selecter.event.UserSelectEvent;
import com.ciash.bms.gui.selecter.event.UserSelectListenable;
import com.ciash.bms.gui.selecter.event.UserSelectListener;
import com.ciash.bms.gui.updater.UserUpdater;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Point;
import com.ciash.bms.entity.User;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Vector;


public class UserLoaderPanel extends ResultLoaderTable implements
		UserSelectListenable, UserLoader, UserUpdater {

	protected UserTableModel tableModel = new UserTableModel();

	// 用于暂存图书的集合缓存
	private Hashtable cacheMap = new Hashtable();

	// 图书选择器
	private Vector listeners = new Vector();

	private Vector selecters = new Vector();

	private HashMap tableMap = new HashMap();

	public UserLoaderPanel() {
		super();
		resultTable.setModel(tableModel);
		DefaultListSelectionModel selectionModel = new DefaultListSelectionModel();
		selectionModel.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
		resultTable.setSelectionModel(selectionModel);
		UserTableListener listener = new UserTableListener();
		resultTable.addMouseListener(listener);
	}

	public void install(Collection books) {
		Iterator it = books.iterator();
		int i = 0;
		while (it.hasNext()) {
			User user = (User) it.next();
			cacheMap.put(user.getUserId(), user);
			// 建立缓存
			tableMap.put(user.getUserId(), new Integer(i));
			tableModel.addRow(User.valueToVector(user));
		}
	}

	public void installUser(User user) {
		cacheMap.put(user.getUserId(), user);
		// 建立缓存
		tableMap.put(user.getUserId(), new Integer(0));
		tableModel.addRow(User.valueToVector(user));
	}

	public void clearResult() {
		cacheMap.clear(); // 清空缓存
		tableMap.clear();
		tableModel.setRowCount(0);
	}

	// --------------------------------------------------------------------------------------------
	// 私有方法
	/**
	 * 在缓存中查找书籍
	 *
	 * @param row
	 *            行数
	 * @return 返回查找到的书籍对象
	 */
	private User searchUser(int row) {
		if (row != -1) {
			String id = (String) tableModel.getValueAt(row, 0);
			return (User) cacheMap.get(id);
		}
		return null;
	}

	/*
	 * 通过行数,设置单行 参数:int 基本数据类型
	 */
	private void setSelectRow(int row) {
		if (row != -1) {
			resultTable.setRowSelectionInterval(row, row);
		}
	}

	/**
	 * 显示弹出菜单 参数:JDK 提供 MouseEvent事件
	 */
	private void showPopupMenu(MouseEvent e) {
		if (e.getButton() == MouseEvent.BUTTON3) {
			if (popupMenu != null) {
				popupMenu.show(resultTable, e.getX(), e.getY());
			}
		}
	}

	// --------------------------------------------------------------------------------------------
	// setter 与 getter
	public void addUserSelecter(UserSelecter bookSelecter) {
		selecters.add(bookSelecter);
	}

	public void removeUserSelecter(UserSelecter userSelector) {
		selecters.remove(userSelector);
	}

	// ---------------------------------------------------------------------------------------------
	// 内部封装事件驱动机制,做到自己的事件自己处理
	private class UserTableListener extends MouseAdapter {
		public void mousePressed(MouseEvent e) {
			Point point = e.getPoint();
			int row = resultTable.rowAtPoint(point);
			showPopupMenu(e);
			User u = searchUser(row);
			Iterator it = selecters.iterator();
			while (it.hasNext()) {
				UserSelecter l = (UserSelecter) it.next();
				l.setSelectUser(u);
			}
			it = listeners.iterator();
			while (it.hasNext()) {
				UserSelectListener l = (UserSelectListener) it.next();
				l.userSelect(new UserSelectEvent(u));
			}
		}
	}

	public Collection uninstall() {
		Collection c = cacheMap.values();
		clearResult();
		return c;
	}

	public void addUserSelectListener(UserSelectListener userSelectListener) {
		listeners.add(userSelectListener);
	}

	public void removeUserSelectListener(UserSelectListener userSelectListener) {
		listeners.remove(userSelectListener);
	}

	public Collection getAll() {
		return cacheMap.values();
	}

	public void updateDeleteUser(User user) {
		Object o = tableMap.get(user.getUserId());
		if (o != null) {
			int i = ((Integer) o).intValue();
			tableModel.removeRow(i);
			tableMap.remove(user);
			cacheMap.remove(user);
		}
	}

	public void updateEditUser(User user) {
		Object o = tableMap.get(user.getUserId());
		int row = -1;
		if (o != null) {
			int i = ((Integer) o).intValue();
			row = i;
			tableModel.removeRow(i);
			tableModel.insertRow(i, User.valueToVector(user));
			tableMap.put(user, user);
		} else {
			row = tableModel.getRowCount();
			tableMap.put(user, new Integer(tableModel.getRowCount()));
			tableModel.addRow(User.valueToVector(user));
		}
		cacheMap.put(user.getUserId(), user);
		resultTable.setRowSelectionInterval(row, row);
	}
}

⌨️ 快捷键说明

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