/** @version 1.02 2004-08-21 @author Cay Horstmann */import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*;/** This program demonstrates tree editing. */ public class TreeEditTest { public static void main(String[] args) { JFrame frame = new TreeEditFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }/** A frame with a tree and buttons to edit the tree. */ class TreeEditFrame extends JFrame { public TreeEditFrame() { setTitle("TreeEditTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // construct tree TreeNode root = makeSampleTree(); model = new DefaultTreeModel(root); tree = new JTree(model); tree.setEditable(true); // add scroll pane with tree JScrollPane scrollPane = new JScrollPane(tree); add(scrollPane, BorderLayout.CENTER); makeButtons(); } public TreeNode makeSampleTree() { DefaultMutableTreeNode root = new DefaultMutableTreeNode("World"); DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA"); root.add(country); DefaultMutableTreeNode state = new DefaultMutableTreeNode("California"); country.add(state); DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose"); state.add(city); city = new DefaultMutableTreeNode("San Diego"); state.add(city); state = new DefaultMutableTreeNode("Michigan"); country.add(state); city = new DefaultMutableTreeNode("Ann Arbor"); state.add(city); country = new DefaultMutableTreeNode("Germany"); root.add(country); state = new DefaultMutableTreeNode("Schleswig-Holstein"); country.add(state); city = new DefaultMutableTreeNode("Kiel"); state.add(city); return root; } /** Makes the buttons to add a sibling, add a child, and delete a node. */ public void makeButtons() { JPanel panel = new JPanel(); JButton addSiblingButton = new JButton("Add Sibling"); addSiblingButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null) return; DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent(); if (parent == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); int selectedIndex = parent.getIndex(selectedNode); model.insertNodeInto(newNode, parent, selectedIndex + 1);
// now display new node
TreeNode[] nodes = model.getPathToRoot(newNode); TreePath path = new TreePath(nodes); tree.scrollPathToVisible(path); } }); panel.add(addSiblingButton); JButton addChildButton = new JButton("Add Child"); addChildButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); // now display new node
TreeNode[] nodes = model.getPathToRoot(newNode); TreePath path = new TreePath(nodes); tree.scrollPathToVisible(path); } }); panel.add(addChildButton); JButton deleteButton = new JButton("Delete"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null) model.removeNodeFromParent(selectedNode); } }); panel.add(deleteButton); add(panel, BorderLayout.SOUTH); } private DefaultTreeModel model; private JTree tree; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 200; }
LS能否具体点?遍历文件后加入结点吗,我不大会用JTREE
以前写的 package squall.pattern.mvc;import java.io.File;import javax.swing.tree.DefaultMutableTreeNode; /** * @author java * * TODO 要更改此生成的类型注释的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ public class MyTreeNode extends DefaultMutableTreeNode {
/** * */ public MyTreeNode() { super(); // TODO 自动生成构造函数存根 } /** * @param userObject */ public MyTreeNode(Object userObject) { super(userObject); // TODO 自动生成构造函数存根 } /** * @param userObject * @param allowsChildren */ public MyTreeNode(Object userObject, boolean allowsChildren) { super(userObject, allowsChildren); // TODO 自动生成构造函数存根 }
public String toString() { return ((File)this.userObject).getName(); }
public boolean isLeaf() { return !(((File)this.userObject).isDirectory()); } } package squall.pattern.mvc;import java.awt.BorderLayout; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File;import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeExpansionListener; import javax.swing.event.TreeWillExpandListener; /** * @author java * * TODO 要更改此生成的类型注释的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ public class Tree { public static void main(String [] args) { TreeFrame frame = new TreeFrame("Tree"); frame.setSize(1024,768); frame.setVisible(true); } }class TreeFrame extends JFrame { public TreeFrame(String title) { super(title);
@version 1.02 2004-08-21
@author Cay Horstmann
*/import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;/**
This program demonstrates tree editing.
*/
public class TreeEditTest
{
public static void main(String[] args)
{
JFrame frame = new TreeEditFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}/**
A frame with a tree and buttons to edit the tree.
*/
class TreeEditFrame extends JFrame
{
public TreeEditFrame()
{
setTitle("TreeEditTest");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); // construct tree TreeNode root = makeSampleTree();
model = new DefaultTreeModel(root);
tree = new JTree(model);
tree.setEditable(true); // add scroll pane with tree JScrollPane scrollPane = new JScrollPane(tree);
add(scrollPane, BorderLayout.CENTER); makeButtons();
} public TreeNode makeSampleTree()
{
DefaultMutableTreeNode root = new DefaultMutableTreeNode("World");
DefaultMutableTreeNode country = new DefaultMutableTreeNode("USA");
root.add(country);
DefaultMutableTreeNode state = new DefaultMutableTreeNode("California");
country.add(state);
DefaultMutableTreeNode city = new DefaultMutableTreeNode("San Jose");
state.add(city);
city = new DefaultMutableTreeNode("San Diego");
state.add(city);
state = new DefaultMutableTreeNode("Michigan");
country.add(state);
city = new DefaultMutableTreeNode("Ann Arbor");
state.add(city);
country = new DefaultMutableTreeNode("Germany");
root.add(country);
state = new DefaultMutableTreeNode("Schleswig-Holstein");
country.add(state);
city = new DefaultMutableTreeNode("Kiel");
state.add(city);
return root;
} /**
Makes the buttons to add a sibling, add a child, and
delete a node.
*/
public void makeButtons()
{
JPanel panel = new JPanel();
JButton addSiblingButton = new JButton("Add Sibling");
addSiblingButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
DefaultMutableTreeNode selectedNode
= (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode == null) return; DefaultMutableTreeNode parent
= (DefaultMutableTreeNode) selectedNode.getParent(); if (parent == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New"); int selectedIndex = parent.getIndex(selectedNode);
model.insertNodeInto(newNode, parent, selectedIndex + 1);
// now display new node
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addSiblingButton); JButton addChildButton = new JButton("Add Child");
addChildButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)
tree.getLastSelectedPathComponent(); if (selectedNode == null) return; DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("New");
model.insertNodeInto(newNode, selectedNode, selectedNode.getChildCount()); // now display new node
TreeNode[] nodes = model.getPathToRoot(newNode);
TreePath path = new TreePath(nodes);
tree.scrollPathToVisible(path);
}
});
panel.add(addChildButton); JButton deleteButton = new JButton("Delete");
deleteButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
DefaultMutableTreeNode selectedNode
= (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getParent() != null)
model.removeNodeFromParent(selectedNode);
}
});
panel.add(deleteButton);
add(panel, BorderLayout.SOUTH);
} private DefaultTreeModel model;
private JTree tree;
private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 200;
}
package squall.pattern.mvc;import java.io.File;import javax.swing.tree.DefaultMutableTreeNode;
/**
* @author java
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class MyTreeNode extends DefaultMutableTreeNode
{
/**
*
*/
public MyTreeNode()
{
super();
// TODO 自动生成构造函数存根
}
/**
* @param userObject
*/
public MyTreeNode(Object userObject)
{
super(userObject);
// TODO 自动生成构造函数存根
}
/**
* @param userObject
* @param allowsChildren
*/
public MyTreeNode(Object userObject, boolean allowsChildren)
{
super(userObject, allowsChildren);
// TODO 自动生成构造函数存根
}
public String toString()
{
return ((File)this.userObject).getName();
}
public boolean isLeaf()
{
return !(((File)this.userObject).isDirectory());
}
}
package squall.pattern.mvc;import java.awt.BorderLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeWillExpandListener;
/**
* @author java
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class Tree
{
public static void main(String [] args)
{
TreeFrame frame = new TreeFrame("Tree");
frame.setSize(1024,768);
frame.setVisible(true);
}
}class TreeFrame extends JFrame
{
public TreeFrame(String title)
{
super(title);
JScrollPane jsp = new JScrollPane();
TreePanel panel = new TreePanel();
jsp.getViewport().add(panel);
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(jsp,BorderLayout.WEST);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent evt)
{
setVisible(false);
dispose();
System.exit(0);
}
});
}
}class TreePanel extends JPanel
{
private MyTreeNode root = null;
private JTree jtree = null;
private void addAllFile(File file, MyTreeNode node)
{
if(file == null && node == null)
{
file = new File("C:/");
node = new MyTreeNode(file);
root = node;
}
if(file.isDirectory())
{
File[] files = file.listFiles();
if(files == null)
{
return;
}
else
{
for(int i = 0; i < files.length; ++i)
{
MyTreeNode newnode = new MyTreeNode(files[i]);
node.add(newnode);
//addAllFile(files[i],newnode);
}
}
}
else
{
return;
}
}
public TreePanel()
{
addAllFile(null,null);
jtree = new JTree(root);
jtree.addTreeWillExpandListener(new TreeWillExpandListener()
{
public void treeWillExpand(TreeExpansionEvent event)
{
MyTreeNode node =(MyTreeNode) event.getPath().getLastPathComponent();
File nodefile = (File) node.getUserObject();
File[] files =nodefile.listFiles();
if(files != null)
{
for(int i = 0; i < files.length; ++i)
{
MyTreeNode addnode = new MyTreeNode(files[i]);
node.add(addnode);
}
}
jtree.repaint();
}
public void treeWillCollapse(TreeExpansionEvent event)
{
jtree.repaint();
}
});
jtree.addTreeExpansionListener(new TreeExpansionListener()
{
public void treeExpanded(TreeExpansionEvent event)
{
jtree.repaint();
}
public void treeCollapsed(TreeExpansionEvent event)
{
jtree.repaint();
}
});
add(jtree);
}
}