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

📄 friendpanel.java

📁 该系统是一个基于p2p的即时聊天系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        /**         * 设置好友信息         *         * @param info 待设置的好友信息         */        public void setValue(UserInfo info) {            if (info != null) {                unloadFriends();                loadFriends(info);                FRIEND_ROOT.setUserObject("我的好友(已登录)");                ActionCenter.getInstance().setActionWhenSelectMyFriend();            }        }        /**         * 返回用户的所有好友         *         * @return 用户的所有好友         */        public List getAllFriends() {            List friends = new ArrayList();            int count = FRIEND_ROOT.getChildCount();            for (int i = 0; i < count; i++) {                DefaultMutableTreeNode node =                    (DefaultMutableTreeNode) FRIEND_ROOT.getChildAt(i);                friends.add(node.getUserObject());            }            return friends;        }        /**         * 添加好友         *         * @param id 待添加好友的ID         */        public void addFriend(String id) {            if (id != null) {                DefaultMutableTreeNode child = new DefaultMutableTreeNode(id);                int count = FRIEND_ROOT.getChildCount();                friendModel.insertNodeInto(child, FRIEND_ROOT, count);                friendTree.expandRow(0);                friendTree.setSelectionRow(count + 1);            }        }        /**         * 删除好友         */        public void deleteFriend() {            DefaultMutableTreeNode node = (DefaultMutableTreeNode) friendTree                .getSelectionPath().getLastPathComponent();            if (node != FRIEND_ROOT) {                int r = friendTree.getRowForPath(friendTree.getSelectionPath());                friendModel.removeNodeFromParent(node);                friendTree.setSelectionRow(r - 1);            }        }        /**         * 返回选中好友的ID         *         * @return 选中好友的ID         */        public String getSelectedFriendID() {            String id = null;            DefaultMutableTreeNode node = (DefaultMutableTreeNode) friendTree                .getSelectionPath().getLastPathComponent();            if (node != FRIEND_ROOT) {                id = node.getUserObject().toString();            }            return id;        }        /**         * 装载好友         *         * @param info 指定的用户信息         */        private void loadFriends(UserInfo info) {            List friends = info.getFriendsInfo().getAllFriends();            for (int i = 0; i < friends.size(); i++) {                DefaultMutableTreeNode child =                    new DefaultMutableTreeNode(friends.get(i));                friendModel.insertNodeInto(child, FRIEND_ROOT, i);            }            friendTree.expandRow(0);            friendTree.setSelectionRow(0);        }        /**         * 卸载好友         */        private void unloadFriends() {            int count = FRIEND_ROOT.getChildCount();            for (int i = 0; i < count; i++) {                friendModel.removeNodeFromParent(                    (DefaultMutableTreeNode) FRIEND_ROOT.getChildAt(0));            }        }        /**         * 设置树型组件的附加选项         */        private void setTree() {            DefaultTreeSelectionModel model = new DefaultTreeSelectionModel();            model.setSelectionMode(model.SINGLE_TREE_SELECTION);            friendTree.setSelectionModel(model);            friendTree.setSelectionRow(0);            friendTree.expandRow(0);        }        /**         * 设置树型组件的单元格渲染器         */        private void setTreeCellRenderer() {            final DefaultTreeCellRenderer renderer1 =                (DefaultTreeCellRenderer) friendTree.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 == FRIEND_ROOT) {                        label.setIcon(ImageShop.USER_ROOT_IMAGEICON);                    } else {                        label.setIcon(ImageShop.USER_IMAGEICON);                    }                    return c;                }            };            friendTree.setCellRenderer(renderer2);        }        /**         * 实现TreeSelectionListener接口的方法         *         * @param event TreeSelectionEvent对象         */        public void valueChanged(TreeSelectionEvent event) {            DefaultMutableTreeNode node = (DefaultMutableTreeNode) event                .getPath().getLastPathComponent();            if (node == FRIEND_ROOT) {                ActionCenter.getInstance().setActionWhenSelectMyFriend();            } else {                ActionCenter.getInstance().setActionWhenSelectFriend();            }        }    }    /**     * 在线聊天面板     */    class OnlineChatPanel extends JPanel {        /**         * 聊天根面板         */        private RootWindow rootWindow;        /**         * 聊天场景面板集         */        private ViewMap viewMap;        /**         * Create a new instance of this class         */        public OnlineChatPanel() {            super(new GridBagLayout());            //聊天根面板            rootWindow = createRootWindow();            setRootWindow(rootWindow);            GridBagConstraints constraints = new GridBagConstraints(                //gridx, gridy                0, 0,                //gridwidth, gridheight                1, 1,                //weightx, weighty                1.0, 1.0,                //anchor                GridBagConstraints.NORTHWEST,                //fill                GridBagConstraints.BOTH,                //insets                new Insets(0, 0, 0, 0),                //ipadx, ipady                0, 0);            add(rootWindow, constraints);        }        /**         * 设置用户信息         *         * @param info 待设置的用户信息         */        public void setValue(UserInfo info) {            int count = viewMap.getViewCount();            for (int i = 0; i < count; i++) {                View view = viewMap.getViewAtIndex(0);                view.close();                viewMap.removeView(Integer.parseInt(view.getTitle()));            }            List friends = info.getFriendsInfo().getAllFriends();            for (int i = 0; i < friends.size(); i++) {                String id = friends.get(i).toString();                View view = createView(id);                DockingUtil.addWindow(view, rootWindow);                viewMap.addView(Integer.parseInt(id), view);                view.close();            }        }        /**         * 与指定的好友聊天         *         * @param id 指定好友的ID         */        public void chatWith(String id) {            int index = Integer.parseInt(id);            if (viewMap.getView(index) == null) {                View view = createView(id);                viewMap.addView(index, view);                DockingUtil.addWindow(view, rootWindow);            } else {                viewMap.getView(index).makeVisible();            }        }        /**         * 删除聊天场景面板         *         * @param id 指定好友的ID         */        public void deleteView(String id) {            int index = Integer.parseInt(id);            View view = viewMap.getView(index);            if (view != null) {                view.close();                viewMap.removeView(index);            }        }        /**         * 返回聊天场景面板         *         * @param id 好友的ID         * @return 聊天场景面板         */        public ChatViewPanel getChatViewPanel(String id) {            ChatViewPanel panel = null;            if (getAllFriends().contains(id) == true) {                chatWith(id);                View view = viewMap.getView(Integer.parseInt(id));                panel = (ChatViewPanel) view.getComponent();            }            return panel;        }        /**         * 创建聊天根面板         *         * @return 创建的聊天根面板         */        private RootWindow createRootWindow() {            View view = new View(null, null, null);            viewMap = new ViewMap();            viewMap.addView(0, view);            RootWindow root = DockingUtil.createRootWindow(viewMap, false);            view.close();            viewMap.removeView(0);            return root;        }        /**         * 创建聊天场景面板         *         * @param id 好友的ID         * @return 创建的聊天场景面板         */        private View createView(String id) {            Component c = new ChatViewPanel(id);            View view = new View(id, ImageShop.USER_IMAGEICON, c);            return view;        }        /**         * 设置聊天根面板的属性         *         * @param root 待设置的聊天根面板         */        private void setRootWindow(RootWindow root) {            DockingWindowsTheme theme = new SoftBlueIceDockingTheme();            RootWindowProperties rwp = new RootWindowProperties();            rwp.addSuperObject(theme.getRootWindowProperties());            rwp.setDragRectangleBorderWidth(2);            TabWindowProperties twp = rwp.getTabWindowProperties();            twp.getCloseButtonProperties().setVisible(false);            twp.getRestoreButtonProperties().setVisible(false);            twp.getMaximizeButtonProperties().setVisible(false);            twp.getMinimizeButtonProperties().setVisible(false);            twp.getTabProperties().getTitledTabProperties()                .getNormalProperties().setToolTipText(null);            WindowTabStateProperties wtsp =                twp.getTabProperties().getNormalButtonProperties();            wtsp.getCloseButtonProperties().setToolTipText("关闭");            wtsp.getRestoreButtonProperties().setToolTipText("还原");            wtsp.getMinimizeButtonProperties().setToolTipText("最小化");            root.getRootWindowProperties().addSuperObject(rwp);            root.getWindowBar(Direction.DOWN).setEnabled(true);            root.addListener(new DockingWindowAdapter() {                public void windowClosed(DockingWindow window) {                    if (window instanceof View) {                        viewMap.removeView(Integer.parseInt(window.getTitle()));                    }                }            });        }    }}

⌨️ 快捷键说明

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