📄 blogmangerui.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 + -