📄 userloaderpanel.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 + -