Tree Example3

import java.awt.*;
import java.awt.event.*;
import java.util.*;


import javax.swing.*;
import javax.swing.tree.*;


public class ExampleFrame_03 extends JFrame {
	
	private DefaultMutableTreeNode root;
	
	public static void main(String args[]) {
		ExampleFrame_03 frame = new ExampleFrame_03();
		frame.setVisible(true);
	}
	
	public ExampleFrame_03() {
		super();
		setTitle("遍历树节点");
		setBounds(100, 100, 290, 260);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		root = new DefaultMutableTreeNode("ROOT");
		DefaultMutableTreeNode nodeFirstA = new DefaultMutableTreeNode(
				"FirstA");
		nodeFirstA.add(new DefaultMutableTreeNode("SecondAA"));
		nodeFirstA.add(new DefaultMutableTreeNode("SecondAB"));
		root.add(nodeFirstA);
		DefaultMutableTreeNode nodeFirstB = new DefaultMutableTreeNode(
				"FirstB");
		root.add(nodeFirstB);
		DefaultMutableTreeNode nodeFirstC = new DefaultMutableTreeNode(
				"FirstC");
		nodeFirstC.add(new DefaultMutableTreeNode("SecondCA"));
		DefaultMutableTreeNode nedeSecondCB = new DefaultMutableTreeNode(
				"SecondCB");
		nedeSecondCB.add(new DefaultMutableTreeNode("SecondCBA"));
		nedeSecondCB.add(new DefaultMutableTreeNode("SecondCBB"));
		nodeFirstC.add(nedeSecondCB);
		nodeFirstC.add(new DefaultMutableTreeNode("SecondCC"));
		root.add(nodeFirstC);
		JTree tree = new JTree(root);
		getContentPane().add(tree, BorderLayout.CENTER);
		final JPanel panel = new JPanel();
		panel.setLayout(new GridLayout(0, 1));
		getContentPane().add(panel, BorderLayout.EAST);
		final JButton button = new JButton("按前序遍历节点");
		button.addActionListener(new ButtonActionListener("按前序遍历"));
		panel.add(button);
		final JButton button_1 = new JButton("按后序遍历节点");
		button_1.addActionListener(new ButtonActionListener("按后序遍历"));
		panel.add(button_1);
		final JButton button_2 = new JButton("以广度优先遍历");
		button_2.addActionListener(new ButtonActionListener("以广度优先遍历"));
		panel.add(button_2);
		final JButton button_3 = new JButton("以深度优先遍历");
		button_3.addActionListener(new ButtonActionListener("以深度优先遍历"));
		panel.add(button_3);
		final JButton button_4 = new JButton("遍历直属子节点");
		button_4.addActionListener(new ButtonActionListener("遍历子节点"));
		panel.add(button_4);
	}
	
	private class ButtonActionListener implements ActionListener {
		
		private String mode;
		
		public ButtonActionListener(String mode) {
			this.mode = mode;
		}
		
		public void actionPerformed(ActionEvent e) {
			Enumeration enumeration;// 声明节点枚举对象
			if (mode.equals("按前序遍历"))
				// 按前序遍历所有树节点
				enumeration = root.preorderEnumeration();
			else if (mode.equals("按后序遍历"))
				// 按后序遍历所有树节点
				enumeration = root.postorderEnumeration();
			else if (mode.equals("以广度优先遍历"))
				// 以广度优先遍历所有树节点
				enumeration = root.breadthFirstEnumeration();
			else if (mode.equals("以深度优先遍历"))
				// 以深度优先遍历所有树节点
				enumeration = root.depthFirstEnumeration();
			else
				enumeration = root.children(); // 遍历该节点的子节点
			while (enumeration.hasMoreElements()) {// 遍历节点枚举对象
				DefaultMutableTreeNode node;// 获得节点
				node = (DefaultMutableTreeNode) enumeration.nextElement();
				// 根据节点级别输出占位符
				for (int l = 0; l < node.getLevel(); l++) {
					System.out.print("----");
				}
				System.out.println(node.getUserObject());// 输出节点标签
			}
			System.out.println();
			System.out.println();
		}
	}
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值