📄 filepanel.java
字号:
loadFiles(); setTreeCellRenderer(); setTree(fileTree); JScrollPane scroller = new JScrollPane(fileTree, 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); } /** * 设置树型组件的单元格渲染器 */ private void setTreeCellRenderer() { final DefaultTreeCellRenderer renderer1 = (DefaultTreeCellRenderer) fileTree.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 == FILE_ROOT) { label.setIcon(ImageShop.SHARE_ROOT_IMAGEICON); } else { int level = ((DefaultMutableTreeNode) value).getLevel(); if (level == 1) { label.setIcon(ImageShop.USER_IMAGEICON); } else { label.setIcon(ImageShop.SHARE_IMAGEICON); } } return c; } }; fileTree.setCellRenderer(renderer2); } /** * 重载文件 */ public void reloadFiles() { unloadFiles(); loadFiles(); } /** * 装载文件 */ private void loadFiles() { List users = XMLAccessor.getAllUsers(); for (int i = 0; i < users.size(); i++) { UserInfo user = (UserInfo) users.get(i); DefaultMutableTreeNode child = new DefaultMutableTreeNode(user); fileModel.insertNodeInto(child, FILE_ROOT, i); List shares = user.getSharesInfo().getAllShares(); for (int j = 0; j < shares.size(); j++) { ShareInfo share = (ShareInfo) shares.get(j); DefaultMutableTreeNode child2 = new DefaultMutableTreeNode(share.getFile()); fileModel.insertNodeInto(child2, child, j); } } fileTree.expandRow(0); fileTree.setSelectionRow(0); } /** * 卸载文件 */ private void unloadFiles() { int count = FILE_ROOT.getChildCount(); for (int i = 0; i < count; i++) { fileModel.removeNodeFromParent( (DefaultMutableTreeNode) FILE_ROOT.getChildAt(0)); } } /** * 实现TreeSelectionListener接口的方法 * * @param event TreeSelectionEvent对象 */ public void valueChanged(TreeSelectionEvent event) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) event .getPath().getLastPathComponent(); int level = node.getLevel(); if (level == 2) { friendViewPanel.reloadFriends( node.getParent().toString(), node.toString()); } else { friendViewPanel.reloadFriends(null, null); } } } /** * 好友视图 */ class FriendViewPanel extends JPanel { /** * 好友树的视图 */ private JTree friendTree; /** * 好友树的模型 */ private DefaultTreeModel friendModel; /** * Create a new instance of this class */ public FriendViewPanel() { 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); //树型组件 friendModel = new DefaultTreeModel(FRIEND_ROOT); friendTree = new JTree(friendModel); setTreeCellRenderer(); setTree(friendTree); JScrollPane scroller = new JScrollPane(friendTree, 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); } /** * 重载共享 * * @param id 指定的用户 * @param file 指定的共享文件 */ public void reloadFriends(String id, String file) { unloadFriends(); if (id != null && file != null) { loadFriends(id, file); } } /** * 装载好友 * * @param id 指定的用户 * @param file 指定的共享文件 */ private void loadFriends(String id, String file) { Element shares = XMLAccessor.getSharesElement(id); List s = SharesInfo.sharesElement2SharesInfo(shares).getAllShares(); for (int i = 0; i < s.size(); i++) { ShareInfo share = (ShareInfo) s.get(i); if (share.getFile().equals(file)) { List f = share.getFriends().getAllFriends(); for (int j = 0; j < f.size(); j++) { DefaultMutableTreeNode friend = new DefaultMutableTreeNode(f.get(j)); friendModel.insertNodeInto(friend, FRIEND_ROOT, j); } } } 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 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); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -