Java树形菜单的创建_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();
 } 

} 

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, java树形菜单
, java树形菜单遍历
, web树形菜单
java动态树形菜单
js xml创建树形菜单、java树形菜单、java 树形菜单 递归、java实现树形菜单、java swing 树形菜单,以便于您获取更多的相关知识。

时间: 2024-09-27 15:24:16

Java树形菜单的创建_java的相关文章

java实现菜单滑动效果_java

菜单滑动效果的实现 public class MenuScrollerActivity extends BaseGameActivity implements IScrollDetectorListener, IOnSceneTouchListener, IClickDetectorListener { // =========================================================== // Constants // ==================

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

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

求教!用Java编写,使用设计模式中Builder模式创建树形菜单,其中要求树形菜单为一个满二叉树

问题描述 输入参数为树的深度.如输入为3则输出以下树形菜单(注意缩进)Level_1Level_2_1Level_3_1_1Level_3_1_2Level_2_2Level_3_2_1Level_3_2_2 解决方案 解决方案二:就这还有用builder模式?是怎么想的?乱用.

Java中数组的创建与传参方法(学习小结)_java

(一)数组的创建 数组的创建包括两部分:数组的申明与分配内存空间. int score[]=null; //申明一维数组 score=new int[3]; //分配长度为3的空间 数组的申明还有另外一种方式: int[] score=null; //把中括号写在数组名前面 通常,在写代码时,为了方便,我们将两行合并为一行: int score[]=new int score[3]; //将数组申明与分配内存写在一行 (二)传递参数 由于初学java,这里只讨论值传递,不考虑地址传递.主要有3点

java省市级联下拉菜单实例代码_java

本文实例为大家分享了java省市级联的具体代码,供大家参考,具体内容如下 1.LoadAreaServlet.java package com.scce.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; im

关于Java数组声明、创建、初始化的相关介绍_java

本文讲述了Java数组的几个相关的方面,讲述了对Java数组的声明.创建和初始化,并给出其对应的代码.一维数组的声明方式:type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为:数组名 = new 数组元素的类型 [数组元素的个数] 实例:TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { i

Java并发编程之创建线程_java

先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程.下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 一.Java中关于应用程序和进程相关的概念 在Java中,一个应用程序对应着一个JVM实例(也有地方称为JVM进程),一般来说名字默认为java.exe或者javaw.exe(windows下可以通过任务管理器查看).Java采用的是单线程编程模型,即在我们自己的程序中如果没有主动创

Java 数组声明、创建、初始化详解_java

一维数组的声明方式: type var[]; 或type[] var; 声明数组时不能指定其长度(数组中元素的个数), Java中使用关键字new创建数组对象,格式为: 数组名 = new 数组元素的类型 [数组元素的个数] 实例: TestNew.java: 程序代码: public class TestNew { public static void main(String args[]) { int[] s ; int i ; s = new int[5] ; for(i = 0 ; i

java swing菜单例子

菜单在Swing中做了重要的改进并且更加的灵活--例如,我们可以在几乎程序中任何地方使用他们,包括在面板和程序片中.语法同它们在老的AWT中是一样的,并且这样使出现在老AWT的在新的Swing也出现了:我们必须为我们的菜单艰难地编写代码,并且有一些不再作为资源支持菜单(其它事件中的一些将使它们更易转换成其它的编程语言).另外,菜单代码相当的冗长,有时还有一些混乱.下面的方法是放置所有的关于每个菜单的信息到对象的二维数组里(这种方法可以放置我们想处理的任何事物到数组里),这种方法在解决这个问题方面