急需一个java写的树型结构,功能类似于windows的资源管理器。点击任意一个节点可以伸缩,点击右键可以修改节点名称,可以添加子节点,删除子节点,最好用applet 做的可以嵌在网页里用
 哪位好心人有这样的源码发一个给我,十万火急啊
 谢谢了我的email:[email protected]

解决方案 »

  1.   

    自己写一个吧
    很快的
    提示一下,自己写个NodeEditor,NodeReference和Node
    分别代替默认的Editor,Reference
      

  2.   

    我在这方面是个盲啊
    nodeeditor,NodeReference,Node分别都是干什么用的啊
      

  3.   

    那么那些节点怎么初始化树,值保存在哪里啊
    需要动态添加,删除的话,节点的值保存。那么这个xml文件怎么写,好心人给个建议吧
      

  4.   

    SWT的可以么?
    如果可以的话,去eclipse网站下载eclipse的地方,有个叫eclipse-sdk-3.x.x-examples.zip
    里面有一个swt写的资源管理器
      

  5.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import javax.swing.tree.*;
    import java.io.*;
    import javax.swing.event.*;public class TransformExample extends JFrame
    {
        public static void main(String [] args)
    {
    TransformExample frame=new TransformExample();
    frame.setBounds(0,0,800,600);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    }
    ImagePane pane;
    JTree tree;
    JSplitPane split;
    JScrollPane scrollPane;
    DefaultTreeModel model;
    public TransformExample()
    {
    initComponent();
    initEventListener();
    }
    private void initEventListener()
    {
    tree.addTreeExpansionListener(new TreeExpansionListener()
    {
    public void treeExpanded(TreeExpansionEvent evt)
    {
    TreeNode node=(TreeNode)evt.getPath().getLastPathComponent();
    if(node instanceof DefaultMutableTreeNode)
    {
    Object obj=((DefaultMutableTreeNode)node.getChildAt(0)).getUserObject();
    if(!(obj instanceof File))
    {
    TreePath path=evt.getPath();
    //System.out.println(node.toString());
    // expandNode((DefaultMutableTreeNode)node);
    model.nodeStructureChanged((DefaultMutableTreeNode)node);
    //tree.expandPath(path);
    //tree.validate();
    //tree.setSelectionPath(path);
    }
    }
    }
    public void treeCollapsed(TreeExpansionEvent evt)
    {

    }
    });
    tree.addTreeSelectionListener(new TreeSelectionListener()
    {
    public void valueChanged(TreeSelectionEvent evt)
    {
    DefaultMutableTreeNode node=(DefaultMutableTreeNode)evt.getPath().getLastPathComponent();
    Object obj=node.getUserObject();
    if(obj instanceof File)
    {
    File f=(File)obj;
    if(f.isFile())
    {
    try
    {
    Image img=new ImageIcon(f.toURL()).getImage();
    ImagePane.image=img;
    pane.repaint();
    scrollPane.getViewport().updateUI();
    }catch(Exception err){
    err.printStackTrace();
    }
    }
    }
    }
    });
    }
    private void initComponent()
    {
    split=new JSplitPane();
    add(split,"Center");
    split.setDividerLocation(160);
    prepareTreeModel();
    tree=new JTree(model);
    tree.putClientProperty("JTree.lineStyle","None");
    tree.setCellRenderer(new FileTreeRenderer());
    split.add(new JScrollPane(tree),JSplitPane.LEFT);
    pane=new ImagePane();
    scrollPane=new JScrollPane(pane);
    split.add(scrollPane,JSplitPane.RIGHT);

    }
    private void prepareTreeModel()
    {
    DefaultMutableTreeNode root=new DefaultMutableTreeNode("我的硬盘");
    File[] roots=File.listRoots();
    for(int i=0;i<roots.length;i++)
    {
    DefaultMutableTreeNode node=new DefaultMutableTreeNode(roots[i]);
    node.add(new DefaultMutableTreeNode());
    root.add(node);
    }
    model=new DefaultTreeModel(root);
    }
    }
    class FileTreeRenderer extends DefaultTreeCellRenderer
    {
        public Component getTreeCellRendererComponent(JTree tree, Object value,
      boolean sel,
      boolean expanded,
      boolean leaf, int row,
      boolean hasFocus) 
      {
    JLabel label=(JLabel)super.getTreeCellRendererComponent(tree,value,sel,expanded,leaf,row,hasFocus);
    if(value instanceof MutableTreeNode)
    {
    DefaultMutableTreeNode node=(DefaultMutableTreeNode)value;
    if(node.getUserObject() instanceof File)
    {
    //System.out.println(value.toString());
    if(((File)node.getUserObject()).getName().length()>0)
    {
    label.setText(((File)node.getUserObject()).getName());
    }
    }
    }
    return label;
    }
    }本地电脑浏览框的,大概和你的一样,自己再改哈!!