?? userviewpanel.java
字號:
/* * @(#) UserViewPanel.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.panel.function.admin.misc;//導(dǎo)入核心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;//導(dǎo)入自定義Java類庫import hws.item.smart.misc.ImageShop;import hws.item.smart.utility.chat.UserInfo;import hws.item.smart.utility.admin.XMLAccessor;/** * 用戶服務(wù)面板 * * @version 0.1 2005-08-30 * @author Hwerz */public class UserViewPanel extends JPanel { /*------------------------------------------------------------------------* * 屬性定義 * *------------------------------------------------------------------------*/ /** * 用戶樹的根節(jié)點(diǎn) */ private DefaultMutableTreeNode root; /** * 用戶樹的視圖 */ private JTree userTree; /** * 用戶樹的模型 */ private DefaultTreeModel userModel; /*------------------------------------------------------------------------* * 構(gòu)造函數(shù) * *------------------------------------------------------------------------*/ /** * Create a new instance of this class */ public UserViewPanel() { super(new GridBagLayout()); //用戶視圖標(biāo)簽 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("系統(tǒng)用戶"); 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(); } /** * 返回用戶樹的根節(jié)點(diǎn) * * @return 用戶樹的根節(jié)點(diǎn) */ 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); } } } /*------------------------------------------------------------------------* * 保護(hù)方法 * *------------------------------------------------------------------------*/ /** * 添加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)); } } /** * 設(shè)置樹型組件的附加選項(xiàng) */ private void setTree() { DefaultTreeSelectionModel model = new DefaultTreeSelectionModel(); model.setSelectionMode(model.SINGLE_TREE_SELECTION); userTree.setSelectionModel(model); userTree.setSelectionRow(0); userTree.expandRow(0); } /** * 設(shè)置樹型組件的單元格渲染器 */ 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); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -