准备:

JMenuBar  点击可展开控件本体

JMenu 点击可展开控件中的一级菜单

JMenuItem 点击可展开控件中的二级菜单

JFrame 程序运行时弹出的那个框框

这是一个使用点击可展开菜单控件的例子。

 package swing;

 import java.awt.EventQueue;

 import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem; public class Menbar { private JFrame frame; /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Menbar window = new Menbar();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the application.
*/
public Menbar() {
initialize();
} /**
* Initialize the contents of the frame.
*/
private void initialize() { //创建一个弹出对话框
frame=new JFrame("嘻嘻嘻汤老师"); //创建点击可展开菜单分为如下几个步骤
//1.创建这个控件主体
//2.创建单个一级菜单,并设置菜单显示文本,并将这个一级菜单添加到控件主体中
//3.创建单个二级菜单,并设置菜单显示文本,然后将二级菜单添加到对应的一级菜单中
//4.将控件主体添加到对话框中 //步骤1:创建一个点击以后可展开子菜单的控件
JMenuBar body=new JMenuBar();
//接下来要开始设置这个控件的点击菜单了。
//现在我想
//点击 一级菜单 “文件” 显示二级菜单 "新建","打开",“保存”
//点击 一级菜单 “编辑” 显示二级菜单 "撤销"
//点击 一级菜单 "帮助" 显示二级菜单 "版本"
//该如何做呢? //首先将控件的一级菜单的文字放入一个String数组中(就是不点击时显示的那个菜单)
String[] menuLab={"文件","编辑","帮助"};
//将控件的二级菜单中要显示的文字放入一个String的二维数组中
String[][] menuItemLab={{"新建","打开","保存"},
{"撤销"},
{"版本"}}; //步骤2:
//创建一个一级名为文件的一级菜单
JMenu menuWenJian =new JMenu(menuLab[0]);
//并将它添加到主体控件中
body.add(menuWenJian); //创建一个一级名为编辑的一级菜单
JMenu menuBianji =new JMenu(menuLab[1]);
//并将它添加到主体控件中
body.add(menuBianji); //创建一个一级名为帮助的一级菜单
JMenu menuBangZhu =new JMenu(menuLab[2]);
//并将它添加到主体控件中
body.add(menuBangZhu); //步骤3:
//给一级菜单#文件#添加子菜单
//创建一个子菜单名为#新建#的子菜单(请问此时menuItemLab[0][0]的值为? )
JMenuItem itemXinJian=new JMenuItem(menuItemLab[0][0]);
//将子菜单添加到对于的一级文件菜单当中
menuWenJian.add(itemXinJian); //创建一个子菜单名为#打开#的子菜单(请问此时menuItemLab[0][1]的值为? )
JMenuItem itemDaKai=new JMenuItem(menuItemLab[0][1]);
//将子菜单添加到对于的一级文件菜单当中
menuWenJian.add(itemDaKai); //创建一个子菜单名为#保存#的子菜单(请问此时menuItemLab[0][2]的值为? )
JMenuItem itemBaoCun=new JMenuItem(menuItemLab[0][2]);
//将子菜单添加到对于的一级文件菜单当中
menuWenJian.add(itemBaoCun); //给一级菜单#编辑#添加子菜单
//创建一个子菜单名为#撤销#的子菜单(请问此时menuItemLab[1][0]的值为? )
JMenuItem itemBianJi=new JMenuItem(menuItemLab[1][0]);
//将子菜单添加到对于的一级文件菜单当中
menuBianji.add(itemBianJi); //给一级菜单#帮助辑#添加子菜单
//创建一个子菜单名为#版本建#的子菜单(请问此时menuItemLab[2][0]的值为? )
JMenuItem itemBanben=new JMenuItem(menuItemLab[2][0]);
//将子菜单添加到对于的一级文件菜单当中
menuBangZhu.add(itemBanben); //步骤2和步骤3可通过如下循环代码简化
// for(int i=0;i<menuLab.length;i++){
//创建一级菜单
// JMenu menu=new JMenu(menuLab[i]);
// body.add(menu);
// for(int j=0;j<menuItemLab[i].length;j++){
//创建二级菜单
// JMenuItem item=new JMenuItem(menuItemLab[i][j]);
//将二级菜单添加到一级菜单
// menu.add(item);
// }
// } //步骤4:将控件主体添加到对话框中
frame.setJMenuBar(body);
//到此,可展开的菜单控件创建成功! //这个frame就是你运行后弹出的那个框框
//设置框框出现时在屏幕上的位置
frame.setLocation(200,50);
//设置框框的大小(修改,620,660 2个值,然后观察弹出框框的大小)
frame.setSize(620,660);
//设置程序运行后,显示这个框框(将true修改为false查看程序运行结果)
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

问题

1:请回答完代码注释中的问题

2.步骤2和步骤3如何通过使用循环来简化?

3.创建一个点击可展开控件

一级菜单:内容  二级菜单:可以 ,不错,还好,牛b,碉堡

一级菜单:历史 二级菜单:昨天 ,今天,明天,后台,大后天

一级菜单:书签 二级菜单:英语 日语 法语  德语

(菜单名设置通过循环来实现)

java Swing 如何添加点击可展开菜单控件( JMenuBar如何使用?)的更多相关文章

  1. Java通过复选框控件数组实现添加多个复选框控件

    编写程序,通过复选框控件数组事先选择用户爱好信息的复选框,在该程序中,要求界面中的复选框数量可以根据指定复选框名称的字符串数组的长度来自动调节. 思路如下: 创建JPanel面板对象: 使用JPane ...

  2. 百度地图API示例之添加/删除工具条、比例尺控件

    代码 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" cont ...

  3. Java Swing 如何添加输入文字并且可以滚动的文本框?( JTextArea ,JScrollPane的使用)

    准备: JTextArea 文本区,一个可以输入文字的文本框 常用方法: 1.setText(String t)设置文本区中显示的文本 2.getText() 获取文本区中显示的文本 JScrollP ...

  4. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法

    在 GTK+/GNOME 3 环境下采用默认的 Adwaita 主题时,Java Swing 程序如果使用本地 GTK+ 主题会出现菜单无边框的 bug,这个问题也可能在其他常用的 GTK+ 主题中出 ...

  5. Java 添加、删除Excel表单控件

    通过表单控件,用户可以快速地将数据填写到模板文档中,轻松引用单元格数据并与其进行交互.本文通过Java代码示例介绍如何在Excel表格中添加表单控件,包括文本框.单选按钮.复选框.组合框.微调按钮等: ...

  6. 点击CheckBox让Gridview控件在编辑与正常状态之间切换

    昨晚快休息时,还有一位网友咨询Insus.NET,他想在开发时,实现一个小功能,就是想让用户在点击Gridview控件第一列的CheckBox之后,GridView进入编辑状态,取消选中的CheckB ...

  7. ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决的方法

    fragment中加入了button和checkbox这些控件.此时这些子控件会将焦点获取到.所以经常当点击item时变化的是子控件.item本身的点击没有响应. 这时候就能够使用descendant ...

  8. 点击div和某些控件之外的地方隐藏div,点击div不隐藏。对象 click和document click冲突有关问题

    帮朋友解决这个问题,我发现用以往想想像的方式来实现,貌似不太可行,所以从网上找了一些解决办法,进行优化,这篇比较详细,所以拿来备忘,另一方面也希望可以帮助需要的同学! 问题背景:jQuery事件问题! ...

  9. H5实现多图片预览上传,可点击可拖拽控件介绍

    版权声明:欢迎转载,请注明出处:http://blog.csdn.net/weixin_36380516 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到 ...

随机推荐

  1. 用aspx文件作为模板

    用aspx文件作为模板 首先申明:标题中的如果是可以去掉的. 想写这篇文章很长时间了,一来是跟大家分享一下,别浪费时间在写代码生成器上面了,什么CodeSmith,XXCodeGenerator等等, ...

  2. 动态加载与插件系统的初步实现(3):WinForm示例

    动态加载与插件系统的初步实现(三):WinForm示例 代码文件在此Download,本文章围绕前文所述默认AppDomain.插件容器AppDomain两个域及IPlugin.PluginProvi ...

  3. 从struts2拦截器到自定义拦截器

    拦截器可谓struts2的核心了,最基本的bean的注入就是通过默认的拦截器实现的,一般在struts2.xml的配置中,package内直接或间接继承了struts-default.xml,这样st ...

  4. JDBC开发

    1.JDBC简介 )数据库驱动 )Sun公司为简化数据库开发,定义了一套jdbc接口,这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可以操作数据库. ...

  5. Sql Server (错误:7302)

    windows server 2008 x64 sql server 2008 r2 OraClient 11g 错误提示: 解决办法:

  6. [ios2] 利用钥匙串,在应用里保存用户密码的方法 【转】

    想在应用里保存帐号.密码等信息的话,直接存到 plist 里显然是不负责任的,自己折腾加密既麻烦又不能保证不被反编译破解.实际上苹果 iOS 和 Mac OS X 系统自带了一套敏感信息保存方案:&q ...

  7. spring-mvc + shiro框架整合(sonne_game网站开发04)

    这篇文章讲的内容是在之前spring + mybatis + spring-mvc + freemarker框架整合的代码的基础上.有需要的可以看看我博客的前两篇文章. 另外,本文章所讲相关所有代码都 ...

  8. iOS开发-内存管理

    内存管理 对于这篇呢,其实现在都是ARC模式,正常状态下基本不用我们去手动释放内存,所以如果不是要面试呀.装逼或者扎实功底的,就先别看了或者了解下即可,因为像面试时,有些面试官想看你的基础时,就有些人 ...

  9. ASP.NET MVC之控制器传递数据到视图的四种方式

    前奏 1. 在新建项目中的Models文件下,新建Products类: public class Products { public int Id { get; set; } public strin ...

  10. 【转】【WebService】.NET C# 创建WebService服务

    Web service是一个基于可编程的web的应用程序,用于开发分布式的互操作的应用程序,也是一种web服务 WebService的特性有以下几点: 1.使用XML(标准通用标记语言)来作为数据交互 ...