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

📄 bookloaderpanel.java

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

import java.awt.Point;
import java.awt.JobAttributes.DefaultSelectionType;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;

import javax.swing.DefaultListSelectionModel;
import javax.swing.JPopupMenu;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableCellRenderer;

import com.ciash.bms.entity.Book;
import com.ciash.bms.entity.User;
import com.ciash.bms.gui.selecter.BookSelecter;
import com.ciash.bms.gui.selecter.event.BookSelectEvent;
import com.ciash.bms.gui.selecter.event.BookSelectListenable;
import com.ciash.bms.gui.selecter.event.BookSelectListener;
import com.ciash.bms.gui.updater.BookUpdater;

public class BookLoaderPanel extends ResultLoaderTable implements
		BookSelectListenable, BookLoader, BookUpdater {

	protected BookTableModel tableModel = new BookTableModel();

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

	private HashMap tableMap = new HashMap();

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

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

	public void installBook(Book book) {
		cacheMap.put(book.getBookId(), book);
		tableMap.put(book.getBookId(), new Integer(0));
		// 建立缓存
		tableModel.addRow(Book.valueToVector(book));
	}

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

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

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

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

	// --------------------------------------------------------------------------------------------
	// setter 与 getter
	public void addBookSelecter(BookSelecter bookSelecter) {
		this.selecters.add(bookSelecter);
	}

	public void removeBookSelecter(BookSelecter bookSelecter) {
		selecters.remove(bookSelecter);
	}

	// ---------------------------------------------------------------------------------------------
	// 内部封装事件驱动机制,做到自己的事件自己处理
	private class BookTableListener extends MouseAdapter {
		public void mousePressed(MouseEvent e) {
			Point point = e.getPoint();
			int row = resultTable.rowAtPoint(point);
			showPopupMenu(e);
			Book b = searchBook(row);
			Iterator it = selecters.iterator();
			while (it.hasNext()) {
				BookSelecter l = (BookSelecter) it.next();
				l.setSelectBook(b);
			}
			it = listeners.iterator();
			while (it.hasNext()) {
				BookSelectListener l = (BookSelectListener) it.next();
				l.userSelect(new BookSelectEvent(b));
			}
		}
	}

	public void addBookSelectListener(BookSelectListener bookSelectListener) {
		listeners.add(bookSelectListener);
	}

	public void removeBookSelectListener(BookSelectListener bookSelectListener) {
		listeners.remove(bookSelectListener);
	}

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

	public void updateDeleteBook(Book book) {
		Object o = tableMap.get(book.getBookId());
		if (o != null) {
			int row = ((Integer) o).intValue();
			System.out.println(row);
			tableModel.removeRow(row);
			tableMap.remove(book.getBookId());
			cacheMap.remove(book.getBookId());
		}
	}

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

⌨️ 快捷键说明

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