急需一个java写的树型结构,功能类似于windows的资源管理器 急需一个java写的树型结构,功能类似于windows的资源管理器。点击任意一个节点可以伸缩,点击右键可以修改节点名称,可以添加子节点,删除子节点,最好用applet 做的可以嵌在网页里用 哪位好心人有这样的源码发一个给我,十万火急啊 谢谢了我的email:[email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 自己写一个吧很快的提示一下,自己写个NodeEditor,NodeReference和Node分别代替默认的Editor,Reference 我在这方面是个盲啊nodeeditor,NodeReference,Node分别都是干什么用的啊 那么那些节点怎么初始化树,值保存在哪里啊需要动态添加,删除的话,节点的值保存。那么这个xml文件怎么写,好心人给个建议吧 SWT的可以么?如果可以的话,去eclipse网站下载eclipse的地方,有个叫eclipse-sdk-3.x.x-examples.zip里面有一个swt写的资源管理器 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; }}本地电脑浏览框的,大概和你的一样,自己再改哈!! 一道关于多线程的问题,求解答 奇怪的read() Swing的替代品有哪些? 如何使用runtime去执行指定的java源文件??? 在十字路口真是痛苦,大伙过来看看吧 java中的throw和throws的区别 帮我看几句简单的代码 简单问题,帮忙看一下。 怎样判断socket断开并自动重连? 请问谁有java的代码混淆器? ERP中整合传真发送功能 求jtree动态的添加到jscrollpane中的方法,在线等!!!100分
很快的
提示一下,自己写个NodeEditor,NodeReference和Node
分别代替默认的Editor,Reference
nodeeditor,NodeReference,Node分别都是干什么用的啊
需要动态添加,删除的话,节点的值保存。那么这个xml文件怎么写,好心人给个建议吧
如果可以的话,去eclipse网站下载eclipse的地方,有个叫eclipse-sdk-3.x.x-examples.zip
里面有一个swt写的资源管理器
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;
}
}本地电脑浏览框的,大概和你的一样,自己再改哈!!