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

📄 csdn技术中心 jtree实现的系统文件目录树.htm

📁 行业分类数据库管理系统
💻 HTM
📖 第 1 页 / 共 3 页
字号:
            fnode = getFileNode(node);<BR>&nbsp;&nbsp;&nbsp;if (fnode != 
            null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_display.setText(fnode.getFile().<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getAbsolutePath());<BR>&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;m_display.setText("");<BR>&nbsp;&nbsp;}<BR>&nbsp;}</P>
            <P>&nbsp;public static void main(String argv[]) 
            <BR>&nbsp;{<BR>&nbsp;&nbsp;new FileTree1();<BR>&nbsp;}<BR>}</P>
            <P>class IconCellRenderer <BR>&nbsp;extends&nbsp;&nbsp;&nbsp; JLabel 
            <BR>&nbsp;implements TreeCellRenderer<BR>{<BR>&nbsp;protected Color 
            m_textSelectionColor;<BR>&nbsp;protected Color 
            m_textNonSelectionColor;<BR>&nbsp;protected Color 
            m_bkSelectionColor;<BR>&nbsp;protected Color 
            m_bkNonSelectionColor;<BR>&nbsp;protected Color 
            m_borderSelectionColor;</P>
            <P>&nbsp;protected boolean m_selected;</P>
            <P>&nbsp;public 
            IconCellRenderer()<BR>&nbsp;{<BR>&nbsp;&nbsp;super();<BR>&nbsp;&nbsp;m_textSelectionColor 
            = 
            UIManager.getColor(<BR>&nbsp;&nbsp;&nbsp;"Tree.selectionForeground");<BR>&nbsp;&nbsp;m_textNonSelectionColor 
            = 
            UIManager.getColor(<BR>&nbsp;&nbsp;&nbsp;"Tree.textForeground");<BR>&nbsp;&nbsp;m_bkSelectionColor 
            = 
            UIManager.getColor(<BR>&nbsp;&nbsp;&nbsp;"Tree.selectionBackground");<BR>&nbsp;&nbsp;m_bkNonSelectionColor 
            = 
            UIManager.getColor(<BR>&nbsp;&nbsp;&nbsp;"Tree.textBackground");<BR>&nbsp;&nbsp;m_borderSelectionColor 
            = 
            UIManager.getColor(<BR>&nbsp;&nbsp;&nbsp;"Tree.selectionBorderColor");<BR>&nbsp;&nbsp;setOpaque(false);<BR>&nbsp;}</P>
            <P>&nbsp;public Component getTreeCellRendererComponent(JTree tree, 
            <BR>&nbsp;&nbsp;Object value, boolean sel, boolean expanded, boolean 
            leaf, <BR>&nbsp;&nbsp;int row, boolean hasFocus) 
            <BR>&nbsp;&nbsp;<BR>&nbsp;{<BR>&nbsp;&nbsp;DefaultMutableTreeNode 
            node = 
            <BR>&nbsp;&nbsp;&nbsp;(DefaultMutableTreeNode)value;<BR>&nbsp;&nbsp;Object 
            obj = 
            node.getUserObject();<BR>&nbsp;&nbsp;setText(obj.toString());</P>
            <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            if (obj instanceof 
            Boolean)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
            setText("Retrieving data...");</P>
            <P>&nbsp;&nbsp;if (obj instanceof 
            IconData)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;IconData idata = 
            (IconData)obj;<BR>&nbsp;&nbsp;&nbsp;if 
            (expanded)<BR>&nbsp;&nbsp;&nbsp;&nbsp;setIcon(idata.getExpandedIcon());<BR>&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;setIcon(idata.getIcon());<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;setIcon(null);</P>
            <P>&nbsp;&nbsp;setFont(tree.getFont());<BR>&nbsp;&nbsp;setForeground(sel 
            ? m_textSelectionColor : 
            <BR>&nbsp;&nbsp;&nbsp;m_textNonSelectionColor);<BR>&nbsp;&nbsp;setBackground(sel 
            ? m_bkSelectionColor : 
            <BR>&nbsp;&nbsp;&nbsp;m_bkNonSelectionColor);<BR>&nbsp;&nbsp;m_selected 
            = sel;<BR>&nbsp;&nbsp;return this;<BR>&nbsp;}<BR>&nbsp;&nbsp;&nbsp; 
            <BR>&nbsp;<BR>&nbsp;public void paintComponent(Graphics g) 
            <BR>&nbsp;{<BR>&nbsp;&nbsp;Color bColor = 
            getBackground();<BR>&nbsp;&nbsp;Icon icon = getIcon();</P>
            <P>&nbsp;&nbsp;g.setColor(bColor);<BR>&nbsp;&nbsp;int offset = 
            0;<BR>&nbsp;&nbsp;if(icon != null &amp;&amp; getText() != null) 
            <BR>&nbsp;&nbsp;&nbsp;offset = (icon.getIconWidth() + 
            getIconTextGap());<BR>&nbsp;&nbsp;g.fillRect(offset, 0, getWidth() - 
            1 - offset,<BR>&nbsp;&nbsp;&nbsp;getHeight() - 
            1);<BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;if (m_selected) 
            <BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;g.setColor(m_borderSelectionColor);<BR>&nbsp;&nbsp;&nbsp;g.drawRect(offset, 
            0, getWidth()-1-offset, 
            getHeight()-1);<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;super.paintComponent(g);<BR>&nbsp;&nbsp;&nbsp; 
            }<BR>}</P>
            <P>class IconData<BR>{<BR>&nbsp;protected Icon&nbsp;&nbsp; 
            m_icon;<BR>&nbsp;protected Icon&nbsp;&nbsp; 
            m_expandedIcon;<BR>&nbsp;protected Object m_data;</P>
            <P>&nbsp;public IconData(Icon icon, Object 
            data)<BR>&nbsp;{<BR>&nbsp;&nbsp;m_icon = 
            icon;<BR>&nbsp;&nbsp;m_expandedIcon = null;<BR>&nbsp;&nbsp;m_data = 
            data;<BR>&nbsp;}</P>
            <P>&nbsp;public IconData(Icon icon, Icon expandedIcon, Object 
            data)<BR>&nbsp;{<BR>&nbsp;&nbsp;m_icon = 
            icon;<BR>&nbsp;&nbsp;m_expandedIcon = 
            expandedIcon;<BR>&nbsp;&nbsp;m_data = data;<BR>&nbsp;}</P>
            <P>&nbsp;public Icon getIcon() <BR>&nbsp;{ <BR>&nbsp;&nbsp;return 
            m_icon;<BR>&nbsp;}</P>
            <P>&nbsp;public Icon getExpandedIcon() <BR>&nbsp;{ 
            <BR>&nbsp;&nbsp;return m_expandedIcon!=null ? m_expandedIcon : 
            m_icon;<BR>&nbsp;}</P>
            <P>&nbsp;public Object getObject() <BR>&nbsp;{ 
            <BR>&nbsp;&nbsp;return m_data;<BR>&nbsp;}</P>
            <P>&nbsp;public String toString() <BR>&nbsp;{ <BR>&nbsp;&nbsp;return 
            m_data.toString();<BR>&nbsp;}<BR>}</P>
            <P>class FileNode<BR>{<BR>&nbsp;protected File m_file;</P>
            <P>&nbsp;public FileNode(File file)<BR>&nbsp;{<BR>&nbsp;&nbsp;m_file 
            = file;<BR>&nbsp;}</P>
            <P>&nbsp;public File getFile() <BR>&nbsp;{ <BR>&nbsp;&nbsp;return 
            m_file;<BR>&nbsp;}</P>
            <P>&nbsp;public String toString() <BR>&nbsp;{ <BR>&nbsp;&nbsp;return 
            m_file.getName().length() &gt; 0 ? m_file.getName() : 
            <BR>&nbsp;&nbsp;&nbsp;m_file.getPath();<BR>&nbsp;}</P>
            <P>&nbsp;public boolean expand(DefaultMutableTreeNode 
            parent)<BR>&nbsp;{<BR>&nbsp;&nbsp;DefaultMutableTreeNode flag = 
            <BR>&nbsp;&nbsp;&nbsp;(DefaultMutableTreeNode)parent.getFirstChild();<BR>&nbsp;&nbsp;if 
            (flag==null)&nbsp;&nbsp; // No flag<BR>&nbsp;&nbsp;&nbsp;return 
            false;<BR>&nbsp;&nbsp;Object obj = 
            flag.getUserObject();<BR>&nbsp;&nbsp;if (!(obj instanceof 
            Boolean))<BR>&nbsp;&nbsp;&nbsp;return 
            false;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Already expanded</P>
            <P>&nbsp;&nbsp;parent.removeAllChildren();&nbsp; // Remove Flag</P>
            <P>&nbsp;&nbsp;File[] files = listFiles();<BR>&nbsp;&nbsp;if (files 
            == null)<BR>&nbsp;&nbsp;&nbsp;return true;</P>
            <P>&nbsp;&nbsp;Vector v = new Vector();</P>
            <P>&nbsp;&nbsp;for (int k=0; k&lt;files.length; 
            k++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;File f = 
            files[k];<BR>&nbsp;&nbsp;&nbsp;if 
            (!(f.isDirectory()))<BR>&nbsp;&nbsp;&nbsp;&nbsp;continue;</P>
            <P>&nbsp;&nbsp;&nbsp;FileNode newNode = new 
            FileNode(f);<BR>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;boolean 
            isAdded = false;<BR>&nbsp;&nbsp;&nbsp;for (int i=0; i&lt;v.size(); 
            i++)<BR>&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;FileNode nd = 
            (FileNode)v.elementAt(i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;if 
            (newNode.compareTo(nd) &lt; 
            0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v.insertElementAt(newNode, 
            i);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isAdded = 
            true;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;if 
            (!isAdded)<BR>&nbsp;&nbsp;&nbsp;&nbsp;v.addElement(newNode);<BR>&nbsp;&nbsp;}</P>
            <P>&nbsp;&nbsp;for (int i=0; i&lt;v.size(); 
            i++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;FileNode nd = 
            (FileNode)v.elementAt(i);<BR>&nbsp;&nbsp;&nbsp;IconData idata = new 
            IconData(FileTree1.ICON_FOLDER, 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;FileTree1.ICON_EXPANDEDFOLDER, 
            nd);<BR>&nbsp;&nbsp;&nbsp;DefaultMutableTreeNode node = new 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;DefaultMutableTreeNode(idata);<BR>&nbsp;&nbsp;&nbsp;parent.add(node);<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;if 
            (nd.hasSubDirs())<BR>&nbsp;&nbsp;&nbsp;&nbsp;node.add(new 
            DefaultMutableTreeNode( <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new 
            Boolean(true) ));<BR>&nbsp;&nbsp;}</P>
            <P>&nbsp;&nbsp;return true;<BR>&nbsp;}</P>
            <P>&nbsp;public boolean 
            hasSubDirs()<BR>&nbsp;{<BR>&nbsp;&nbsp;File[] files = 
            listFiles();<BR>&nbsp;&nbsp;if (files == 
            null)<BR>&nbsp;&nbsp;&nbsp;return false;<BR>&nbsp;&nbsp;for (int 
            k=0; k&lt;files.length; 
            k++)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;if 
            (files[k].isDirectory())<BR>&nbsp;&nbsp;&nbsp;&nbsp;return 
            true;<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;return 
            false;<BR>&nbsp;}<BR>&nbsp;<BR>&nbsp;public int compareTo(FileNode 
            toCompare)<BR>&nbsp;{ <BR>&nbsp;&nbsp;return&nbsp; 
            m_file.getName().compareToIgnoreCase(<BR>&nbsp;&nbsp;&nbsp;toCompare.m_file.getName() 
            ); <BR>&nbsp;}</P>
            <P>&nbsp;protected File[] listFiles()<BR>&nbsp;{<BR>&nbsp;&nbsp;if 
            (!m_file.isDirectory())<BR>&nbsp;&nbsp;&nbsp;return 
            null;<BR>&nbsp;&nbsp;try<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;return 
            m_file.listFiles();<BR>&nbsp;&nbsp;}<BR>&nbsp;&nbsp;catch (Exception 
            ex)<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;JOptionPane.showMessageDialog(null, 
            <BR>&nbsp;&nbsp;&nbsp;&nbsp;"Error reading directory 
            "+m_file.getAbsolutePath(),<BR>&nbsp;&nbsp;&nbsp;&nbsp;"Warning", 
            JOptionPane.WARNING_MESSAGE);<BR>&nbsp;&nbsp;&nbsp;return 
            null;<BR>&nbsp;&nbsp;}<BR>&nbsp;}<BR>}<BR></P></SPAN><BR>
            <DIV 
            style="FONT-SIZE: 14px; LINE-HEIGHT: 25px"><STRONG>作者Blog:</STRONG><A 
            id=ArticleContent1_ArticleContent1_AuthorBlogLink 
            href="http://blog.csdn.net/jackkui/" 
            target=_blank>http://blog.csdn.net/jackkui/</A></DIV>
            <DIV 
            style="FONT-SIZE: 14px; COLOR: #900; LINE-HEIGHT: 25px"><STRONG>相关文章</STRONG></DIV>
            <TABLE id=ArticleContent1_ArticleContent1_RelatedArticles 
            style="BORDER-COLLAPSE: collapse" cellSpacing=0 border=0>
              <TBODY>
              <TR>
                <TD><A 
                  href="http://dev.csdn.net/article/33/article/37/37853.shtm">TreeCellRenderer使用方法简介</A> 
                </TD></TR>
              <TR>
                <TD><A 
                  href="http://dev.csdn.net/article/33/article/37/37851.shtm">DOM基础&amp;实例</A> 
                </TD></TR>
              <TR>
                <TD><A 
                  href="http://dev.csdn.net/article/33/article/37/37494.shtm">使用SAX把XML转换成JTree</A> 
                </TD></TR>
              <TR>
                <TD><A 
                  href="http://dev.csdn.net/article/33/article/33/33786.shtm">ResultSet概论</A> 
                </TD></TR>
              <TR>
                <TD><A 
                  href="http://dev.csdn.net/article/33/article/33/33541.shtm">JTree实现的系统文件目录树</A> 
                </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><A name=#Comment></A>
      <TABLE cellPadding=0 width="100%" border=0>
        <TBODY>
        <TR>
          <TD>
            <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center 
            bgColor=#006699 border=0>
              <TBODY>
              <TR bgColor=#006699>
                <TD id=white align=middle width=556 bgColor=#006699><FONT 
                  color=#ffffff>对该文的评论</FONT> </TD></TR></TBODY></TABLE>
            <DIV align=right><A id=CommnetList1_CommnetList1_Morelink 
            href="http://comment.csdn.net/Comment.aspx?c=2&amp;s=33541">【评论】</A> 
            <A id=CommnetList1_CommnetList1_Hyperlink1 
            href="javascript:window.close();">【关闭】</A> 
      </DIV><BR></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></FORM><!-- 版权 -->
<HR align=center width=770 noShade SIZE=1>

<TABLE cellSpacing=0 cellPadding=0 width=500 align=center border=0>
  <TBODY>
  <TR>
    <TD vAlign=bottom align=middle height=10><A 
      href="http://www.csdn.net/intro/intro.asp?id=2">网站简介</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=5">广告服务</A> - <A 
      href="http://www.csdn.net/map/map.shtm">网站地图</A> - <A 
      href="http://www.csdn.net/help/help.asp">帮助信息</A> - <A 
      href="http://www.csdn.net/intro/intro.asp?id=2">联系方式</A> - <A 
      href="http://www.csdn.net/english">English</A> </TD>
    <TD align=middle rowSpan=3><A 
      href="http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001032100010"><IMG 
      height=48 src="CSDN技术中心 JTree实现的系统文件目录树.files/biaoshi.gif" width=40 
      border=0></A></TD></TR>
  <TR>
    <TD vAlign=top align=middle>北京百联美达美数码科技有限公司 版权所有 京ICP证020026号</TD></TR>
  <TR align=middle>
    <TD vAlign=top><FONT face=Verdana>Copyright &copy; CSDN.NET, Inc. All Rights 
      Reserved</FONT></TD></TR>
  <TR>
    <TD height=15></TD></TR></TBODY></TABLE><!-- /版权 -->
<SCRIPT>
      document.write("<img src=http://count.csdn.net/count/pageview1.asp?columnid=4&itemid=11 border=0 width=0 height=0>");
    </SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

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