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.点击对应节点,图片更换相关介绍