📄 friendpanel.java
字号:
/** * 设置好友信息 * * @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 + -