Java树形菜单的创建

功能:实现创建一个树形菜单
说明:创建树形菜单结构与创建菜单栏类似,是按层次与模型创建的。
通过DefaultMutableTreeNode类创建根节点、子节点和孙节点对象,再通过DefaultTreeModel
类利用根节点创建树模型对象,然后通过treeModel.insertNodeInto方法将节点对象插入树模型中。

效果图:

代码:

import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
public class Tree extends JFrame implements TreeSelectionListener
{
 private JLabel label; 

 public Tree()
 {
  super("树形菜单"); setSize(400,400);
  Container container = getContentPane(); 

  //创建根节点和子节点
  DefaultMutableTreeNode root = new DefaultMutableTreeNode("文本编辑器");
  DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("文件");
  DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("编辑");
  //利用根节点创建TreeModel
  DefaultTreeModel treeModel = new DefaultTreeModel(root);
  //插入子节点node1,node2
  treeModel.insertNodeInto(node1,root,root.getChildCount());
  treeModel.insertNodeInto(node2,root,root.getChildCount()); 

  //创建节点node1的子节点并插入
  DefaultMutableTreeNode leafnode = new DefaultMutableTreeNode("打开");
  treeModel.insertNodeInto(leafnode,node1,node1.getChildCount());
  leafnode = new DefaultMutableTreeNode("保存");
  treeModel.insertNodeInto(leafnode,node1,node1.getChildCount());
  leafnode = new DefaultMutableTreeNode("另存为");
  treeModel.insertNodeInto(leafnode,node1,node1.getChildCount());
  leafnode = new DefaultMutableTreeNode("关闭");
  treeModel.insertNodeInto(leafnode,node1,node1.getChildCount()); 

  //创建节点node2的子节点并插入
  leafnode = new DefaultMutableTreeNode("剪切");
  treeModel.insertNodeInto(leafnode,node2,node2.getChildCount());
  leafnode = new DefaultMutableTreeNode("复制");
  treeModel.insertNodeInto(leafnode,node2,node2.getChildCount());
  leafnode = new DefaultMutableTreeNode("粘贴");
  treeModel.insertNodeInto(leafnode,node2,node2.getChildCount()); 

  //创建树对象
  JTree tree = new JTree(treeModel);
  //设置Tree的选择为一次只能选择一个节点
  tree.getSelectionModel().setSelectionMode(
       TreeSelectionModel.SINGLE_TREE_SELECTION);
  //注册监听器
  tree.addTreeSelectionListener(this); 

  tree.setRowHeight(20); 

  //创建节点绘制对象
  DefaultTreeCellRenderer cellRenderer =
       (DefaultTreeCellRenderer)tree.getCellRenderer(); 

  //设置字体
  cellRenderer.setFont(new Font("Serif",Font.PLAIN,14));
  cellRenderer.setBackgroundNonSelectionColor(Color.white);
  cellRenderer.setBackgroundSelectionColor(Color.yellow);
  cellRenderer.setBorderSelectionColor(Color.red); 

  //设置选或不选时,文字的变化颜色
  cellRenderer.setTextNonSelectionColor(Color.black);
  cellRenderer.setTextSelectionColor(Color.blue); 

  //把树对象添加到内容面板
  container.add(new JScrollPane(tree)); 

  //创建标签
  label = new JLabel("你当前选择的节点为:",JLabel.CENTER);
  label.setFont(new Font("Serif",Font.PLAIN,14));
  container.add(label,BorderLayout.SOUTH); 

  setVisible(true); //设置可见
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口关闭动作
 } 

 //处理TreeSelectionEvent事件
 public void valueChanged(TreeSelectionEvent event)
 {
  JTree tree = (JTree)event.getSource();
  //获取目前选取的节点
  DefaultMutableTreeNode selectionNode =
   (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
  String nodeName = selectionNode.toString();
  label.setText("你当前选取的节点为: "+nodeName);
 } 

 public static void main(String args[])
 {
  Tree d = new Tree();
 } 

} 

本文按层次与模型创建的树形菜单,与创建菜单栏类似,不知道小伙伴们有没有掌握呐?

(0)

相关推荐

  • Java easyui树形表格TreeGrid的实现代码

    自己搞了一下午,终于用JAVA实现了数据网格.记录一下实现的代码.(PS:此处的easyui是1.5版本,楼主只贴了核心的代码) 实现图 JSP页面 <head> //权限列表 $( document ).ready(function(){ var parentId = 0; $('#tt').treegrid({ url:'queryPrivilege.action?parentId='+parentId, idField:'id', treeField:'RecordStatus', co

  • Java递归如何正确输出树形菜单

    本文实例为大家分享了java递归输出树形菜单的具体代码,供大家参考,具体内容如下 首先我们要建立树节点的类: package com.tree; public class Node { private Integer id; private Integer parentId; private String name; private String link; public Integer getId() { return id; } public void setId(Integer id) {

  • Java递归遍历树形结构

    废话不多说了,直接给大家贴代码,具体代码如下所示: //菜单树形结构 public JSONArray treeMenuList(JSONArray menuList, int parentId) { JSONArray childMenu = new JSONArray(); for (Object object : menuList) { JSONObject jsonMenu = JSONObject.fromObject(object); int menuId = jsonMenu.ge

  • QQ好友列表树形列表java代码实现代码

    以前在网上瞎转悠的时候就发现很多人为用Java实现QQ登陆后的面板的问题感到十分头疼,最近我因在写模拟QQ的项目,故不可或缺的遇到了这一个问题,在网上我google了,百度了,最终发现的是有很多人被这一问题困扰,却没有解决的方案,估计是那些写出来了的人,没有发布到网上来,如今,经过自己的多方面查找资料,终于把他写出来了,也不枉昨晚熬夜了,呵呵,好了先让我们来看看实现的效果截图: 好了,效果就是这样了,虽然实现了基本功能,但是还是不完美,比如说好友面板不能随着窗口改变大小而改变,不过应该已经可以解

  • Java遍历输出指定目录、树形结构所有文件包括子目录下的文件

    下面通过一段代码介绍下Java输出指定目录.树形结构下的所有文件包括子目录中的文件的方法,并附有效果图. import java.io.File; public class ReadDirectory { // 文件所在的层数 private int fileLevel; /** * 生成输出格式 * @param name 输出的文件名或目录名 * @param level 输出的文件名或者目录名所在的层次 * @return 输出的字符串 */ public String createPri

  • Java创建树形结构算法实例代码

    在JavaWeb的相关开发中经常会涉及到多级菜单的展示,为了方便菜单的管理需要使用数据库进行支持,本例采用相关算法讲数据库中的条形记录进行相关组装和排序讲菜单组装成树形结构. 首先是需要的JavaBean import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import j

  • java、js中实现无限层级的树形结构方法(类似递归)

    js中: var zNodes=[ {id:0,pId:-1,name:"Aaaa"}, {id:1,pId:0,name:"A"}, {id:11,pId:1,name:"A1"}, {id:12,pId:1,name:"A2"}, {id:13,pId:1,name:"A3"}, {id:2,pId:0,name:"B"}, {id:21,pId:2,name:"B1&qu

  • JSON复杂数据处理之Json树形结构数据转Java对象并存储到数据库的实现

    在网站开发中经常遇到级联数据的展示,比如选择城市的时候弹出的省市县选择界面.很多前端制作人员习惯于从JSON中而不是从数据库中获取省市县数据.那么在选择了省市县中的某一个城市 ,存储到数据库中需要存储所选城市的代码.所以需要一个能将JSON数据(一般存储在javascript脚本中)结构全部导入到数据库中的功能. JSON的特点是支持层级结构.支持数组表示的对象 .下面的示例介绍如何将JSON的省市县数据保存到数据库中,实现原理非常简单,就是利用JSON的java工具包API,将层次结构的JSO

  • Java树形菜单的创建

    功能:实现创建一个树形菜单 说明:创建树形菜单结构与创建菜单栏类似,是按层次与模型创建的. 通过DefaultMutableTreeNode类创建根节点.子节点和孙节点对象,再通过DefaultTreeModel 类利用根节点创建树模型对象,然后通过treeModel.insertNodeInto方法将节点对象插入树模型中. 效果图: 代码: import java.awt.*; import javax.swing.*; import javax.swing.tree.*; import ja

  • java树形菜单对象生成

    本文实例为大家分享了java树形菜单对象生成的具体代码,供大家参考,具体内容如下 1.TreeNode对象 package com.ruoyi.system.utils.Vo; import java.util.ArrayList; import java.util.List; public class TreeNode { /** * 节点ID */ private Integer id; /** * 节点名称 */ private String name; /** * 父节点ID */ pr

  • 轻松学习jQuery插件EasyUI EasyUI创建树形菜单

    一.EasyUI使用标记创建树形菜单 一个树形菜单(Tree)可以从标记创建.easyui 树形菜单(Tree)也可以定义在 <ul> 元素中.无序列表的 <ul> 元素提供一个基础的树(Tree)结构.每一个 <li> 元素将产生一个树节点,子 <ul> 元素将产生一个父树节点. 创建树形菜单(Tree) <ul class="easyui-tree"> <li> <span>Folder</s

  • java实现遍历树形菜单两种实现代码分享

    文本主要向大家分享了java实现遍历树形菜单的实例代码,具体如下. OpenSessionView实现: package org.web; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.se

  • JAVA递归生成树形菜单的实现过程

    递归生成一个如图的菜单,编写两个类数据模型Menu.和创建树形的MenuTree.通过以下过程实现: 1.首先从菜单数据中获取所有根节点. 2.为根节点建立次级子树并拼接上. 3.递归为子节点建立次级子树并接上,直至为末端节点拼接上空的“树”. 首先,编写数据模型Menu.每条菜单有自己的id.父节点parentId.菜单名称text.菜单还拥有次级菜单children. import java.util.List; public class Menu { private String id;

  • java实现构造无限层级树形菜单

    这里来讲一下后台java如何构造多叉树,这样前台就可接收到数据递归构造树形菜单了. 我们来理一下如何实现构造多叉树的逻辑吧,其实整个问题概括起来就是 1.构造一个实体类,用来存储节点,所以我们构造的需要四个对象(id,pid,name,和chirenList) 2.构造菜单结构 3.构造子菜单,如此循环,通过pid判断上级菜单 具体实现: 1.这里构造Tree.java实体类 package com.tcl.jr.crm.entity; /** * 类名称:Tree * 类描述:树形结构 */

  • Java构建树形菜单的实例代码(支持多级菜单)

    效果图:支持多级菜单. 菜单实体类: public class Menu { // 菜单id private String id; // 菜单名称 private String name; // 父菜单id private String parentId; // 菜单url private String url; // 菜单图标 private String icon; // 菜单顺序 private int order; // 子菜单 private List<Menu> children;

  • java编程两种树形菜单结构的转换代码

    首先看看两种树形菜单结构的代码示例. SingleTreeNode: package com.zzj.tree; public class SingleTreeNode { private int id; private int pId; private String name; public SingleTreeNode() { } public SingleTreeNode(int id, int pId, String name) { this.id = id; this.pId = pI

  • Java实现微信公众号自定义菜单的创建方法示例

    本文实例讲述了Java实现微信公众号自定义菜单的创建方法.分享给大家供大家参考,具体如下: 开发公众号的时候可能需要给一些自定义菜单添加事件,比如点击某菜单然后服务端给用户推送信息. 我们也可以使用微信提供的网页调试工具直接生成菜单,不过需要考虑是否影响用户问题. 注意:使用代码自定义菜单事件,手动添加的菜单会失效!谨慎使用! 官方文档 httpClientUtil工具类需要的话可以在前面微信公众号获取access_token中获取 public class WechatDIYMenuTest

随机推荐