一、JTree基础设置
package 树;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class tree1 {
public static void main(String[] args) {
JFrame f=new JFrame();
DefaultMutableTreeNode root=new DefaultMutableTreeNode("根节点");
DefaultMutableTreeNode subnode1=new DefaultMutableTreeNode("子节点1");
DefaultMutableTreeNode subnode2=new DefaultMutableTreeNode("子节点2");
DefaultMutableTreeNode subnode11=new DefaultMutableTreeNode("子节点11");
DefaultMutableTreeNode subnode12=new DefaultMutableTreeNode("子节点12");
root.add(subnode1);root.add(subnode2);
subnode1.add(subnode11);subnode1.add(subnode12);
JTree tree=new JTree(root);
f.getContentPane().add(tree);
TreeSelectionModel model=tree.getSelectionModel();
// model.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);//单选
// model.setSelectionMode(TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);//连续选
model.setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);//多选
tree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
public void valueChanged(TreeSelectionEvent e) {
JTree t=(JTree) e.getSource();
if(!t.isSelectionEmpty()) {
TreePath paths[]=t.getSelectionPaths();
for(TreePath path:paths) {
//System.out.println(path);
Object obj[]=path.getPath();
for(Object o:obj) {
System.out.println(o); }
}
}
}
});
// tree.setRootVisible(false);//不显示根节点
// tree.setShowsRootHandles(false);//显示根节点手柄
// DefaultTreeCellRenderer render=(DefaultTreeCellRenderer) tree.getCellRenderer();
// render.setLeafIcon(new ImageIcon("树/1.png"));//叶子结点
// render.setOpenIcon(new ImageIcon("树/2.png"));//节点打开时
// render.setClosedIcon(new ImageIcon("树/3.png"));//节点关闭时
tree.putClientProperty("JTree.lineStyle", "Horizontal");//连接线效果
f.setSize(800,600);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
二、树模型的修改![](https://i-blog.csdnimg.cn/blog_migrate/d9a935779c1038d5e9b2b127678de874.jpeg)
package 树;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
public class tree2 extends JFrame{
private JTextField textfield;
private DefaultTreeModel treemodel;
private JTree tree;
private JButton addbutton,upbutton,delbutton;
private JScrollPane scrollPane;
public tree2() {
super();
setTitle("维护树的模型");
setBounds(100,100,500,400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
getContentPane().add(scrollPane,BorderLayout.CENTER);
DefaultMutableTreeNode root=new DefaultMutableTreeNode("新疆师范大学");
DefaultMutableTreeNode node1=new DefaultMutableTreeNode("计算机科学技术学院");
DefaultMutableTreeNode node2=new DefaultMutableTreeNode("地理科学旅游学院");
DefaultMutableTreeNode node3=new DefaultMutableTreeNode("物理电子学院");
DefaultMutableTreeNode node4=new DefaultMutableTreeNode("音乐学院");
root.add(node1);root.add(node2);root.add(node3);root.add(node4);
node1.add(new DefaultMutableTreeNode("计算机科学与技术"));
node1.add(new DefaultMutableTreeNode("软件工程"));
node1.add(new DefaultMutableTreeNode("网络工程"));
node2.add(new DefaultMutableTreeNode("地理科学"));
node2.add(new DefaultMutableTreeNode("旅游管理"));
treemodel=new DefaultTreeModel(root,true);
tree=new JTree(treemodel);
tree.setSelectionPath(new TreePath(root));
scrollPane.setViewportView(tree);
final JPanel panel=new JPanel();
getContentPane().add(panel,BorderLayout.SOUTH);
final JLabel label=new JLabel();
label.setText("名称:");
panel.add(label);
textfield =new JTextField();
textfield.setColumns(8);;
textfield.setText("测试");
panel.add(textfield);
addbutton=new JButton("添加");
upbutton=new JButton ("修改");
delbutton=new JButton("删除");
panel.add(addbutton);panel.add(delbutton);panel.add(upbutton);
addbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode node=new DefaultMutableTreeNode(textfield.getText());//
TreePath selectpath=tree.getSelectionPath();
DefaultMutableTreeNode parentnode=(DefaultMutableTreeNode) selectpath.getLastPathComponent();
treemodel.insertNodeInto(node, parentnode, parentnode.getChildCount());
TreePath path=selectpath.pathByAddingChild(node);
// TODO 自动生成的方法存根
}
});
upbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TreePath selectpath=tree.getSelectionPath();
DefaultMutableTreeNode node=(DefaultMutableTreeNode) selectpath.getLastPathComponent();
node.setUserObject(textfield.getText());
treemodel.nodeChanged(node);//修改
tree.setSelectionPath(selectpath);
// TODO 自动生成的方法存根
}
});
delbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TreePath selectpath=tree.getSelectionPath();
DefaultMutableTreeNode node=(DefaultMutableTreeNode) selectpath.getLastPathComponent();
treemodel.removeNodeFromParent(node);
//tree.setSelectionPath(selectpath);
// TODO 自动生成的方法存根
}
});
}
public static void main(String[] args) {
tree2 t=new tree2();
t.setVisible(true);
}
}