?? tree.java.bak
字號:
import javax.swing.tree.*;
import java.util.*;
import javax.swing.*;
import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
public class Tree extends JFrame{
int cont=1;
public DefaultMutableTreeNode treeDataMode=new DefaultMutableTreeNode("ksldjahfkdsl"); //定義根節(jié)點
public DefaultTreeModel model=new DefaultTreeModel(treeDataMode); //定義模型
JScrollPane jScrollPane1 = new JScrollPane();
JTree jTree1 = new JTree(model); //定義樹
//設(shè)置選擇模式
TreeSelectionModel sm=new DefaultTreeSelectionModel();
//
JPopupMenu jPopupMenu1 = new JPopupMenu();
JMenuItem jMenuItem1 = new JMenuItem();
JMenuItem jMenuItem2 = new JMenuItem();
JMenuItem jMenuItem3 = new JMenuItem();
JButton jButton1 = new JButton();
JButton jButton2 = new JButton();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JButton jButton3 = new JButton();
public Tree() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
Tree tree = new Tree();
tree.setVisible(true);
}
private void jbInit() throws Exception {
this.setSize(500,500);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setTitle("JTree使用");
this.getContentPane().setLayout(null);
jScrollPane1.setVerticalScrollBarPolicy(JScrollPane.
VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setBounds(new Rectangle(39, 38, 163, 347));
jMenuItem1.setText("添加");
jMenuItem2.setText("刪除");
jMenuItem3.setText("修改");
jTree1.addMouseListener(new Tree_jTree1_mouseAdapter(this));
jButton1.setBounds(new Rectangle(264, 40, 83, 25));
jButton1.setText("添加節(jié)點");
jButton1.addActionListener(new Tree_jButton1_actionAdapter(this));
jButton2.setBounds(new Rectangle(266, 82, 83, 25));
jButton2.setText("展開節(jié)點");
jButton2.addActionListener(new Tree_jButton2_actionAdapter(this));
jTree1.addTreeSelectionListener(new Tree_jTree1_treeSelectionAdapter(this));
jLabel1.setText("jLabel1");
jLabel1.setBounds(new Rectangle(221, 353, 235, 31));
jLabel2.setText("jLabel2");
jLabel2.setBounds(new Rectangle(221, 262, 232, 36));
jButton3.setBounds(new Rectangle(266, 125, 83, 25));
jButton3.setText("刪除節(jié)點");
jButton3.addActionListener(new Tree_jButton3_actionAdapter(this));
this.getContentPane().add(jScrollPane1);
this.getContentPane().add(jButton1);
this.getContentPane().add(jButton2);
this.getContentPane().add(jLabel1);
this.getContentPane().add(jLabel2);
this.getContentPane().add(jButton3);
jScrollPane1.getViewport().add(jTree1);
jPopupMenu1.add(jMenuItem1);
jPopupMenu1.add(jMenuItem2);
jPopupMenu1.add(jMenuItem3);
//設(shè)置模式
sm.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree1.setSelectionModel(sm);
//
}
public void viewAllNode(){ //展開樹
for(Enumeration nodes=treeDataMode.breadthFirstEnumeration();nodes.hasMoreElements();){
DefaultMutableTreeNode node=(DefaultMutableTreeNode)nodes.nextElement();
jTree1.expandPath(new TreePath(node.getPath()));
}
}
public void addNode(String item){
TreePath parentPath = jTree1.getSelectionPath();
DefaultMutableTreeNode parentNode = null;
if(parentPath==null){
parentNode=treeDataMode;
}
else{
parentNode = (DefaultMutableTreeNode)
(parentPath.getLastPathComponent());
}
Object child=new String(item);
addItem(parentNode, child, true);
}
private void addItem(DefaultMutableTreeNode parent, Object child,
boolean b){
DefaultMutableTreeNode childNode =
new DefaultMutableTreeNode(child);
if (parent == null) {
parent = treeDataMode;
}
model.insertNodeInto(childNode, parent,
parent.getChildCount());
}
public void delNode(){ //刪除節(jié)點
TreePath currentSelection = jTree1.getSelectionPath();
if (currentSelection != null) {
DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode)
(currentSelection.getLastPathComponent());
MutableTreeNode parent = (MutableTreeNode) (currentNode.getParent());
if (parent != null) {
model.removeNodeFromParent(currentNode);
}
}
}
public void jTree1_mouseReleased(MouseEvent e) {
if(e.isPopupTrigger()){
jPopupMenu1.show(e.getComponent(),e.getX(),e.getY());
}
}
public void myAddItem(String item){ //添加節(jié)點
TreePath tp=jTree1.getSelectionPath(); //獲得路徑
DefaultMutableTreeNode dmtn=null; //定義一個新節(jié)點
if(tp==null){ //判斷獲得的節(jié)點是否為空
dmtn=treeDataMode; //如果為空就設(shè)定新節(jié)點為根節(jié)點
}
else{
dmtn=(DefaultMutableTreeNode)(tp.getLastPathComponent());//如果不為空就設(shè)為當前節(jié)點
}
Object chil=new String(item); //定義一個新節(jié)點值
DefaultMutableTreeNode chileNode=new DefaultMutableTreeNode(chil); //定義一個新節(jié)點(用于加入到樹中)
model.insertNodeInto(chileNode,dmtn,dmtn.getChildCount()); //添加節(jié)點
}
public void jButton1_actionPerformed(ActionEvent e) { //添加節(jié)點
myAddItem("節(jié)點"+"hong yu ke");
cont++;
}
public void jButton2_actionPerformed(ActionEvent e) { //展開所有節(jié)點
viewAllNode();
}
public void jTree1_valueChanged(TreeSelectionEvent e) {
Object tp[]=e.getPath().getPath();
jLabel2.setText(tp[tp.length-1].toString()); //顯示所選節(jié)點的值
StringBuffer sb=new StringBuffer();
for(int i=1;i<tp.length;i++){
sb.append(tp[i]+"/");
}
jLabel1.setText(new String(sb)+"23132131"); //顯示所選節(jié)點所經(jīng)過的路徑
}
public void jButton3_actionPerformed(ActionEvent e) {
delNode();
}
}
class Tree_jButton3_actionAdapter
implements ActionListener {
private Tree adaptee;
Tree_jButton3_actionAdapter(Tree adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton3_actionPerformed(e);
}
}
class Tree_jButton2_actionAdapter
implements ActionListener {
private Tree adaptee;
Tree_jButton2_actionAdapter(Tree adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton2_actionPerformed(e);
}
}
class Tree_jButton1_actionAdapter
implements ActionListener {
private Tree adaptee;
Tree_jButton1_actionAdapter(Tree adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
class Tree_jTree1_mouseAdapter
extends MouseAdapter {
private Tree adaptee;
Tree_jTree1_mouseAdapter(Tree adaptee) {
this.adaptee = adaptee;
}
public void mouseReleased(MouseEvent e) {
adaptee.jTree1_mouseReleased(e);
}
}
class Tree_jTree1_treeSelectionAdapter
implements TreeSelectionListener {
private Tree adaptee;
Tree_jTree1_treeSelectionAdapter(Tree adaptee) {
this.adaptee = adaptee;
}
public void valueChanged(TreeSelectionEvent e) {
adaptee.jTree1_valueChanged(e);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -