📄 userviewpanel.java
字号:
/* * @(#) UserViewPanel.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.panel.function.admin.misc;//导入核心Java类库import java.awt.Insets;import java.awt.Component;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.awt.event.MouseListener;import java.util.List;import javax.swing.JTree;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.tree.TreePath;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.tree.DefaultTreeSelectionModel;import javax.swing.event.TreeSelectionListener;//导入自定义Java类库import hws.item.smart.misc.ImageShop;import hws.item.smart.utility.chat.UserInfo;import hws.item.smart.utility.admin.XMLAccessor;/** * 用户服务面板 * * @version 0.1 2005-08-30 * @author Hwerz */public class UserViewPanel extends JPanel { /*------------------------------------------------------------------------* * 属性定义 * *------------------------------------------------------------------------*/ /** * 用户树的根节点 */ private DefaultMutableTreeNode root; /** * 用户树的视图 */ private JTree userTree; /** * 用户树的模型 */ private DefaultTreeModel userModel; /*------------------------------------------------------------------------* * 构造函数 * *------------------------------------------------------------------------*/ /** * Create a new instance of this class */ public UserViewPanel() { super(new GridBagLayout()); //用户视图标签 GridBagConstraints constraints = new GridBagConstraints( //gridx, gridy 0, 0, //gridwidth, gridheight 1, 1, //weightx, weighty 0.0, 0.0, //anchor GridBagConstraints.NORTHWEST, //fill GridBagConstraints.NONE, //insets new Insets(0, 5, 0, 0), //ipadx, ipady 0, 0); add(new JLabel("用户视图"), constraints); //树型组件 root = new DefaultMutableTreeNode("系统用户"); userModel = new DefaultTreeModel(root); userTree = new JTree(userModel); loadUsers(); setTree(); setTreeCellRenderer(); JScrollPane scroller = new JScrollPane(userTree, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); constraints.gridy = 1; constraints.weightx = 1.0; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; constraints.insets = new Insets(0, 0, 0, 0); add(scroller, constraints); } /*------------------------------------------------------------------------* * 公共方法 * *------------------------------------------------------------------------*/ /** * 重载用户 */ public void reloadUsers() { unloadUsers(); loadUsers(); } /** * 返回用户树的根节点 * * @return 用户树的根节点 */ public DefaultMutableTreeNode getRootNode() { return root; } /** * 删除选中的用户 */ public void deleteSelectedUser() { TreePath path = userTree.getSelectionPath(); if (path != null) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) path .getLastPathComponent(); if (node.isLeaf()) { int row = userTree.getRowForPath(path); userModel.removeNodeFromParent(node); userTree.setSelectionRow(row - 1); XMLAccessor.deleteUser(node.toString(), true); } } } /*------------------------------------------------------------------------* * 保护方法 * *------------------------------------------------------------------------*/ /** * 添加TreeSelectionListener * * @param listener 待添加的TreeSelectionListener */ protected void addTreeSelectionListener(TreeSelectionListener listener) { userTree.addTreeSelectionListener(listener); } /** * 添加MouseListener * * @param listener 待添加的MouseListener */ protected void addMouseListener2(MouseListener listener) { userTree.addMouseListener(listener); } /*------------------------------------------------------------------------* * 私有方法 * *------------------------------------------------------------------------*/ /** * 装载用户 */ private void loadUsers() { List users = XMLAccessor.getAllUsers(); for (int i = 0; i < users.size(); i++) { UserInfo info = (UserInfo) users.get(i); DefaultMutableTreeNode child = new DefaultMutableTreeNode(info); userModel.insertNodeInto(child, root, i); } userTree.expandRow(0); userTree.setSelectionRow(0); } /** * 卸载用户 */ private void unloadUsers() { int count = root.getChildCount(); for (int i = 0; i < count; i++) { userModel.removeNodeFromParent( (DefaultMutableTreeNode) root.getChildAt(0)); } } /** * 设置树型组件的附加选项 */ private void setTree() { DefaultTreeSelectionModel model = new DefaultTreeSelectionModel(); model.setSelectionMode(model.SINGLE_TREE_SELECTION); userTree.setSelectionModel(model); userTree.setSelectionRow(0); userTree.expandRow(0); } /** * 设置树型组件的单元格渲染器 */ private void setTreeCellRenderer() { final DefaultTreeCellRenderer renderer1 = (DefaultTreeCellRenderer) userTree.getCellRenderer(); DefaultTreeCellRenderer renderer2 = new DefaultTreeCellRenderer() { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component c = renderer1.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); JLabel label = (JLabel) c; if (value == root) { label.setIcon(ImageShop.USER_ROOT_IMAGEICON); } else { label.setIcon(ImageShop.USER_IMAGEICON); } return c; } }; userTree.setCellRenderer(renderer2); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -