JTree(java)

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTree;
import javax.swing.Timer;
import javax.swing.border.TitledBorder;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;

public class Jtree extends JFrame implements ActionListener {
	JLabel jl_time;//最下面显示时间
	DefaultMutableTreeNode root,gaibang,baituoshan,chongyanggong,taohuadao,dali;
	DefaultTreeModel treeModel;
	JTree tree;
	JLabel jLabel;//中间显示背景图片
	//背部面板设计
	public void initNorth() {
		JLabel jLabel=new JLabel("侠之大者     为国为民",JLabel.CENTER);
		jLabel.setFont(new Font("楷书", Font.PLAIN, 16));
		this.add(jLabel, BorderLayout.NORTH);
	}
	//西部面板设计
	public void initWest() {
		root=new DefaultMutableTreeNode();//根节点
		
		gaibang=new DefaultMutableTreeNode("丐帮");
		gaibang.add(new DefaultMutableTreeNode("洪七公"));
		gaibang.add(new DefaultMutableTreeNode("鲁有脚"));
		baituoshan=new DefaultMutableTreeNode("白驼山");
		baituoshan.add(new DefaultMutableTreeNode("欧阳锋"));
		baituoshan.add(new DefaultMutableTreeNode("欧阳克"));
		chongyanggong=new DefaultMutableTreeNode("重阳宫");
		chongyanggong.add(new DefaultMutableTreeNode("王重阳"));
		chongyanggong.add(new DefaultMutableTreeNode("周伯通"));
		chongyanggong.add(new DefaultMutableTreeNode("全真七子"));
		taohuadao=new DefaultMutableTreeNode("桃花岛");
		taohuadao.add(new DefaultMutableTreeNode("黄药师"));
		taohuadao.add(new DefaultMutableTreeNode("黄蓉"));
		dali=new DefaultMutableTreeNode("大理");
		dali.add(new DefaultMutableTreeNode("段智兴"));
		
		root.add(chongyanggong);
		root.add(gaibang);
		root.add(baituoshan);
		root.add(taohuadao);
		root.add(dali);
		
		treeModel=new DefaultTreeModel(root);
		tree = new JTree(treeModel);
		//tree.setBackground(Color.BLUE);// 设置树的背景色
		// 创建一个树的绘制对象
		DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
		renderer.setClosedIcon(null);// 设置结点折叠时不采用图标
		renderer.setOpenIcon(null);// 设置结点展开时不采用图标
		renderer.setLeafIcon(null);// 设置叶子结点不采用图标
		tree.setCellRenderer(renderer);
		tree.setRootVisible(false);//根节点隐藏
		//展开子节点
		int count = root.getChildCount();// 获得一级结点的数量
		for (int i = 0; i < count; i++) {// 遍历树的一级结点
			DefaultMutableTreeNode node = (DefaultMutableTreeNode) root
					.getChildAt(i);// 获得指定索引位置的一级结点对象
			TreePath path = new TreePath(node.getPath());// 获得结点对象的路径
			tree.expandPath(path);// 展开该结点
		}
		this.add(tree, BorderLayout.WEST);
	}
	//中间面板设计
	public void initCenter() {
		jLabel=new JLabel(new ImageIcon("images/diao.jpg"), JLabel.CENTER);
		this.add(jLabel, BorderLayout.CENTER);
	}
	//南部面板设计:显示当前时间
	public void initSouth() {
		Timer t=new Timer(1000, this);
		t.start();
		jl_time=new JLabel(Calendar.getInstance().getTime().toLocaleString(),JLabel.RIGHT);
		jl_time.setFont(new Font("楷书", Font.PLAIN, 16));
		this.add(jl_time, BorderLayout.SOUTH);
	}
	public Jtree() {
		this.setTitle("射雕英雄传");//标题
		//屏幕宽度
		int width=Toolkit.getDefaultToolkit().getScreenSize().width;
		//屏幕高度
		int height=Toolkit.getDefaultToolkit().getScreenSize().height;
		this.setSize(width/2-100, height/2+300);//设置窗体大小
		this.initNorth();
		this.initWest();
		this.initCenter();
		this.initSouth();
		this.setVisible(true);//显示窗体
		//点击关闭,窗体关闭
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public static void main(String[] args) {
		Jtree jtree=new Jtree();
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		jl_time.setText(Calendar.getInstance().getTime().toLocaleString()+" ");
		
	}
}

结果图:

未实现:1.各节点图标

 2.点击对应节点,图片更换相关介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值