需求:
  创建多级菜单

步骤:
  A:创建窗体对象(并设置属性和布局)
  B:创建菜单栏
  C:创建菜单和子菜单
  D:逐步添加菜单(子菜单添加到菜单中,菜单添加到菜单栏中)
  E:窗体中设置菜单栏(菜单栏并不是添加,而是设置)
  F:设置各个菜单对应的监听事件
  G:设置窗体关闭监听时间
  H:设置显示窗口

代码:

  1. public class FrameText4 {
  2.  
  3. public static void main(String[] args) {
  4.  
  5. // 创建窗体对象
  6. final Frame f = new Frame("多级菜单");
  7. // 设置窗体属性
  8. f.setBounds(300, 300, 500, 500);
  9. f.setLayout(new FlowLayout());
  10.  
  11. //获取原来的标题
  12. final String str = f.getTitle();
  13.  
  14. // 创建菜单栏
  15. MenuBar m = new MenuBar();
  16.  
  17. // 创建菜单
  18. Menu m1 = new Menu("操作");
  19. Menu m2 = new Menu("更改标题");
  20.  
  21. // 创建子菜单
  22. final MenuItem mi1 = new MenuItem("N级菜单");
  23. final MenuItem mi2 = new MenuItem("M级菜单");
  24. MenuItem mi3 = new MenuItem("恢复标题");
  25. MenuItem mi4 = new MenuItem("退出");
  26. MenuItem mi5 = new MenuItem("打开记事本");
  27.  
  28. // 逐步添加
  29. // 子菜单添加到菜单中
  30. m2.add(mi1);
  31. m2.add(mi2);
  32. m2.add(mi3);
  33. m1.add(m2);
  34. m1.add(mi5);
  35. m1.add(mi4);
  36.  
  37. // 菜单添加到菜单栏中
  38. m.add(m1);
  39.  
  40. // 窗体中设置菜单栏
  41. f.setMenuBar(m);
  42.  
  43. // 设置各个菜单对应的监听事件
  44. mi1.addActionListener(new ActionListener() {
  45.  
  46. public void actionPerformed(ActionEvent e) {
  47. // 更改标题栏的名称
  48. // 为了以后方便修改,首先获取mi1菜单的名称,再进行更改
  49. f.setTitle(mi1.getLabel());
  50. // 把窗口的标题名称改为mi1的标签
  51. }
  52. });
  53.  
  54. mi2.addActionListener(new ActionListener(){
  55.  
  56. public void actionPerformed(ActionEvent e) {
  57. //如mil1
  58. f.setTitle(mi2.getLabel());
  59. }
  60.  
  61. });
  62.  
  63. mi3.addActionListener(new ActionListener(){
  64. //这个跟上面2个有所不同,因为是恢复原来的标题。
  65. //所以得在前面创建个字符串得到开始的标题,然后直接拿来更改就可以
  66. public void actionPerformed(ActionEvent e) {
  67. f.setTitle(str);
  68. }
  69. });
  70.  
  71. //退出系统
  72. mi4.addActionListener(new ActionListener(){
  73.  
  74. public void actionPerformed(ActionEvent e) {
  75. //退出系统
  76. System.exit(0);
  77. }
  78.  
  79. });
  80.  
  81. //打开记事本
  82. mi5.addActionListener(new ActionListener(){
  83.  
  84. public void actionPerformed(ActionEvent e) {
  85. //Runtime 使应用程序能够与其运行的环境相连接
  86. //public static Runtime getRuntime()返回与当前 Java 应用程序相关的运行时对象。
  87. //public Process exec(String command)在单独的进程中执行指定的字符串命令。
  88.  
  89. Runtime r = Runtime.getRuntime();
  90. try {
  91. r.exec("notepad");
  92. } catch (IOException e1) {
  93. // TODO Auto-generated catch block
  94. e1.printStackTrace();
  95. }
  96.  
  97. }
  98.  
  99. });
  100.  
  101. //设置窗口关闭监听事件
  102. f.addWindowListener(new WindowAdapter(){
  103. public void windowClosing(WindowEvent e) {
  104. System.exit(0);
  105. }
  106. });
  107.  
  108. //使窗体显示
  109. f.setVisible(true);
  110. }
  111.  
  112. }

java 24 - 7 GUI之 创建多级菜单窗体的更多相关文章

  1. java 24 - 8 GUI之创建四则运算计算器(未校验版)

    这个是用NetBeans软件制作的,因为这个软件制作GUI任务比较方便 通过拖拽控件生成的窗体:(红色的名称是更改后的控件名称) 拉拽好布局后,要进行的步骤: A:更改想要进行操作的控件的名称(右键控 ...

  2. java 24 - 6 GUI之 创建只能输入数字的文本框

    需求: 创建一个含有标签和文本框的窗体,其中文本框只能输入数字 步骤:(大致上) 创建窗体对象 创建标签对象 创建文本框对象 把组件添加到窗体中 设置标签的监听事件,对键盘按下的数据进行监听 设置窗体 ...

  3. java 24 - 4 GUI之创建数据转移窗口

    需求: 把文本框中的数据,通过点击按钮,转移到文本域中.  同时清空文本框中的数据 代码:(步骤都注释了) public class FrameDemo4 { public static void m ...

  4. java 24 - 5 GUI之 鼠标移动改变窗体背景颜色

    需求: 创建一个可改变背景颜色的窗口,鼠标移动到按钮上,窗口背景就会改变成特定的颜色 步骤: (大致上) 创建窗口对象 创建按钮对象 添加按钮到窗口中 设置窗口关闭监听事件 设置鼠标进入按钮区域的监听 ...

  5. 原生JS封装创建多级菜单函数

    手写一个使用原生JS封装的多级菜单的函数,满足以下几点需求. 子类层级不确定,可根据数据自动生成多级菜单. 操作便捷,只需传入一个HTML标签. 缺点: 需要满足特定的数据结构 废话不多说,展示代码. ...

  6. java 24 - 1 GUI之GUI的概述和基本代码

    GUI(图形用户界面) GUI和CLI的区别: GUI Graphical User Interface(图形用户接口). 用图形的方式,来显示计算机操作的界面,这样更方便更直观. CLI Comma ...

  7. java 24 - 9 GUI 之 给窗体换图标、设置启动在屏幕中间、更换皮肤

    A.首先更改窗体左上角的图片 步骤一: 创建3个包,分别建立1个类 第一个是窗体的包,窗体类:设置窗体的主要布置和功能 第二个是资源包,图片:把想要改的图案拉进来 第三个是UI界面包,UI界面设计类: ...

  8. java 24 - 11 GUI之制作登陆注册页面

    简单说说,懒得发了... 步骤: A:首先写出登陆注册需要用到类以及代码(IO流) B:然后创建登陆窗口和注册窗口 C:各个监听事件: a:登录窗口 1.重置:把2个文本框的内容全部清空 2.注册:关 ...

  9. java 24 - 10 GUI 之 四则预算的数据校验

    我想要在校验的过程中,如果输入到操作数中的不是数字,则弹出提醒框: 类 JOptionPane  有助于方便地弹出要求用户提供值或向其发出通知的标准对话框 方法名 描述 showConfirmDial ...

随机推荐

  1. 如何删掉Portal中的无效内容

    1.登陆到https://[PORTALURL]/arcgis/sharing/rest/ 2.使用内容的所有者或者门户管理员的账号登陆. 3.登陆后访问https://[PORTALURL]/arc ...

  2. Scrum三大角色特点

    灵感来自于一段冷笑话: 一天,一头猪和一只鸡在路上散步,鸡看了一下猪说,“嗨,我们合伙开一家餐馆怎么样?”,猪回头看了一下鸡说,“好主意,那你准备给餐馆起什么名字呢?”,鸡想了想说“餐馆名字叫火腿和鸡 ...

  3. Android的进程等级

    Android五个进程等级 1.前台进程(Foreground process): 用户当前工作所需要的.一个进程如果满足下列任何条件被认为是前台进程: 正运行着一个正在与用户交互的活动(Activi ...

  4. Canvas drawText实现中英文居中

    @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint mTextPaint = new Paint( ...

  5. iOS 开发之路(使用WKWebView加载Html5) 四

    基于Swift 3 . Xcode 8 . iOS 10 下的WKWebView的使用. 首先是WKWebView的基本用法: var wk:WKWebView! var progBar:UIProg ...

  6. iOS 学习 - 13.微信分享链接、QQ 分享图片

    准备工作---原文来自这个 首先要在微信开放平台申请 AppID 和 QQ ID(我第一天晚上申请的,第二天中午就通过了),接着导入 SDK,也就是3个 .h 和一个 .a 文件,详情见这里 如果你是 ...

  7. DOM属性操作

    HTML attribute  --> DOM property 每个html属性都对应一个DOM对象属性,举个栗子: <div> <label for="userN ...

  8. Atitit.论图片类型 垃圾文件的识别与清理  流程与设计原则 与api概要设计 v2 pbj

    Atitit.论图片类型 垃圾文件的识别与清理  流程与设计原则 与api概要设计 v2 pbj 1. 俩个问题::识别垃圾文件与清理策略1 2. 如何识别垃圾图片1 2.1. 体积过小文件<1 ...

  9. 区别和详解:jQuery中的 $().each()和$.each()/jQuery.each()

    1.认识   $().each()遍历当前jQuery对象,并在每一个元素上执行回调函数.其方法内部是通过调用静态方法jQuery.each()来实现的.   jQuery.each()是一个通用的遍 ...

  10. 关于JAVA中子类和父类的构造方法

    本篇文章总结了一些关于Java构造方法的常见问题. 为什么创建了一个子类对象会调用其父类的构造方法 如下代码示例: package simplejava; class Super { String s ...