⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 blogmangerui.java

📁 Java语言中JTree的具体应用实例
💻 JAVA
字号:
package jTreeFirst;

import java.util.List;

public class BlogMangerUI extends javax.swing.JFrame{
	private List<UserInfo> userList;
	private javax.swing.JTree tree;
	
	public static void main(String[] args) {
		BlogMangerUI bm = new BlogMangerUI();
		bm.drawJTree();
	}
	public void drawJTree(){
		this.setTitle("奋战在JAVA");
		this.setSize(300, 400);
		java.awt.FlowLayout f = new java.awt.FlowLayout();
		this.setLayout(f);
		UserDao dao = new UserDao();
		userList = dao.getAllUser();
		
		//创建一颗自定义的树,利用生成的数据
		tree = createTree();
		//创建一个自定义弹出菜单并添加到树上
		javax.swing.JPopupMenu pop = createPopMenu();
		tree.setComponentPopupMenu(pop);
		//将自定义的树添加到界面上
		this.add(tree);
		this.setDefaultCloseOperation(3);
		this.setVisible(true);
	}
	public javax.swing.JTree createTree(){
		//创建一颗默认的树
		javax.swing.JTree tree = new javax.swing.JTree();
		//首先创建一个根节点
		javax.swing.tree.DefaultMutableTreeNode rootNode = new javax.swing.tree.DefaultMutableTreeNode();
		rootNode.setUserObject("学生日志管理");
		for(int i=0;i<userList.size();i++){
			javax.swing.tree.DefaultMutableTreeNode studentNode = new javax.swing.tree.DefaultMutableTreeNode();
			UserInfo student = userList.get(i);
			studentNode.setUserObject(student);
			rootNode.add(studentNode);
			//取得所属于这个用户的BLOG对象列表
			List<UserBlog> ub = student.getUserBlog();
			for(int t=0;t<ub.size();t++){
				javax.swing.tree.DefaultMutableTreeNode blogNode = new javax.swing.tree.DefaultMutableTreeNode();
				UserBlog bn = ub.get(t);
				blogNode.setUserObject(bn);
				//将日志节点加到所属学生对象节点上
				studentNode.add(blogNode);
			}
		}
		javax.swing.tree.DefaultTreeModel dm = new javax.swing.tree.DefaultTreeModel(rootNode);
		tree.setModel(dm);
		
		return tree;
	}
	
	//创建自定义弹出菜单方法
	javax.swing.JPopupMenu createPopMenu(){
		//创建一个默认的弹出菜单
		javax.swing.JPopupMenu popMenu = new javax.swing.JPopupMenu();
		//创建弹出菜单项: 添加、删除、 修改
		javax.swing.JMenuItem mi_add = new javax.swing.JMenuItem("添加");
		mi_add.setActionCommand("add");
		javax.swing.JMenuItem mi_del = new javax.swing.JMenuItem("删除");
		mi_del.setActionCommand("del");
		javax.swing.JMenuItem mi_mod = new javax.swing.JMenuItem("修改");
		mi_mod.setActionCommand("mod");
		//设置内部的事件监听器对象
		java.awt.event.ActionListener ac_listener = new java.awt.event.ActionListener(){
			public void actionPerformed(java.awt.event.ActionEvent e){
				treeMenuAction(e);
			}
		};
		//给菜单项加上监听器对象
		mi_add.addActionListener(ac_listener);
		mi_del.addActionListener(ac_listener);
		mi_mod.addActionListener(ac_listener);
		//将菜单项添加到弹出菜单上
		popMenu.add(mi_add);
		popMenu.add(mi_del);
		popMenu.add(mi_mod);
		return popMenu;
	}
	
	//弹出菜单事件响应
	public void treeMenuAction(java.awt.event.ActionEvent e){
		//得到选中菜单的命令
		String command = e.getActionCommand();
		//得到在树上选中的路径
		javax.swing.tree.TreePath tp = tree.getSelectionPath();
		//如果选中了某个节点
		if(null!=tp){
			//得到选中的节点,每个节点都是DefaulatMutableTreeNode对象
			javax.swing.tree.DefaultMutableTreeNode selectedNode = 
				(javax.swing.tree.DefaultMutableTreeNode)tp.getLastPathComponent();
			Object ob = selectedNode.getUserObject();
			//判断选中的节点是何种类型
			//if(ob instanceof UserInfo||ob instanceof UserBlog){
			if (ob instanceof UserInfo) {
					UserInfo user = (UserInfo) ob;
					String s = "要执行的操作是:" + command;
					String info = user.toString();
					javax.swing.JOptionPane.showMessageDialog(this, s + "\r\n"
							+ info);
				}
				if (ob instanceof UserBlog) {
					UserBlog ub = (UserBlog) ob;
					String s = "要执行的操作是:" + command;
					String info = ub.toString();
					javax.swing.JOptionPane.showMessageDialog(this, s + "\r\n"
							+ info);
				}
			}
		//}
		else{
			javax.swing.JOptionPane.showMessageDialog(this, "请选中要操作的对象!!!");
		}
		
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -