AWT07-菜单组件
1.菜单组件
方法名 | 说明 |
MenuBar | 菜单条,菜单的容器 |
Menu | 菜单组件,菜单项的容器,也是MenuItem的子类,所以可以作为菜单项使用 |
PopupMenu | 上下文菜单组件(右键菜单组件) |
MenuItem | 菜单项组件 |
CheckboxMenuItem | 复选框菜单项组件 |
tips:如果要给某个组件添加快捷键,只需在创建菜单项时设置即可,如new MenuItem("菜单项名字",new MenuShortCut(KeyEvent.vk_Q,true));
MenuShortCut是默认为Ctrl+键,后面的true是加不加Shift。
2.体系
MenuComponent
-MenuItem
CheckboxMenuItem
Menu
-(接口)MenuContainer
-PopupMenu
-MenuBar
(接口)MenuContainer
3.菜单组件的使用
1 import java.awt.*;
2 import java.awt.event.*;
3
4 public class MenuTestDemo {
5 Frame frame = new Frame("菜单测试");
6
7 MenuBar mb = new MenuBar();
8 Menu fileMenu = new Menu("文件");
9 Menu editMenu = new Menu("编辑");
10 Menu formatMenu = new Menu("格式");
11
12 MenuItem auto = new MenuItem("自动换行");
13 MenuItem copy = new MenuItem("复制",new MenuShortcut(KeyEvent.VK_S));
14 MenuItem paste = new MenuItem("粘贴",new MenuShortcut(KeyEvent.VK_V));
15
16 MenuItem comment = new MenuItem("注释");
17 MenuItem uncomment = new MenuItem("取消注释");
18
19 PopupMenu rightMouseButton = new PopupMenu();
20 MenuItem close = new MenuItem("关闭",new MenuShortcut(KeyEvent.VK_W));
21
22
23 TextArea ta = new TextArea(6,40);
24 public void init(){
25
26 rightMouseButton.add(close);
27 ta.add(rightMouseButton);
28
29 ta.addMouseListener(new MouseAdapter() {
30 @Override
31 public void mouseReleased(MouseEvent e) {
32 boolean flag = e.isPopupTrigger();
33
34 if (flag){
35 rightMouseButton.show(ta,e.getX(),e.getY());
36 }
37 }
38 });
39
40 close.addActionListener(new ActionListener() {
41 @Override
42 public void actionPerformed(ActionEvent e) {
43 System.exit(0);
44 }
45 });
46
47 comment.addActionListener(new ActionListener() {
48 @Override
49 public void actionPerformed(ActionEvent e) {
50 ta.append("您点击了"+e.getActionCommand()+"\n");
51 }
52 });
53
54 copy.addActionListener(new ActionListener() {
55 @Override
56 public void actionPerformed(ActionEvent e) {
57 ta.append("您点击了"+e.getActionCommand()+"\n");
58 }
59 });
60
61 formatMenu.add(comment);
62 formatMenu.add(uncomment);
63
64 editMenu.add(auto);
65 editMenu.add(copy);
66 editMenu.add(paste);
67 editMenu.add(formatMenu);
68
69 mb.add(fileMenu);
70 mb.add(editMenu);
71
72 frame.setMenuBar(mb);
73 frame.add(ta);
74
75 frame.addWindowListener(new WindowAdapter() {
76 @Override
77 public void windowClosing(WindowEvent e) {
78 System.exit(0);
79 }
80 });
81 frame.setLocation(500,250);
82 frame.pack();
83 frame.setVisible(true);
84 }
85
86 public static void main(String[] args) {
87 new MenuTestDemo().init();
88 }
89 }
AWT07-菜单组件的更多相关文章
- Android入门(七):Spinner下拉式菜单组件
对于手机和平板电脑的应用程序来说,打字是非常不方便的操作方式,比较好的方式就是列出一组选项让用户挑选,这样就可以避免打字的麻烦.使用Spinner下拉菜单组件需要完成以下几个步骤: 1.建立选项列表, ...
- 菜单组件——axure线框图部件库介绍
软件类的教程,我写不出长篇大论,这里面的都是基础的操作,希望初学者,根据一个功能演示,可以自己测试其他功能菜单的效果! Axure自带的菜单组件,我几乎没有用到过,做菜单导航,我第一时间想到的还是矩形 ...
- JS列表的下拉菜单组件(仿美化控件select)
JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...
- Delphi 之 菜单组件(TMainMenu)
菜单组件TMainMenu 创建菜单双击TmenuMain,单击Caption就可以添加一个菜单项 菜单中添加分割线只需加“-”就可以添加一个分割线 级联菜单的设计 单击鼠标右键弹出菜单中选择Crea ...
- 【Java】详解菜单组件
在这篇文章中,笔者会介绍Java图形界面编程中菜单组件的用法.关于菜单组件,因为java存在AWT编程和Swing编程,所以菜单组件也存在AWT菜单和Swing菜单.因为Swing组件使用的比较多,所 ...
- react 侧栏二级菜单组件
侧边栏菜单组件 component 下新建menu文件,menu下建index.jsx和subitem.jsx index.jsx import React, { Component } from ' ...
- 第二百零八节,jQuery EasyUI,SplitButton(分割按钮菜单)组件
jQuery EasyUI,SplitButton(分割按钮)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 SplitButton(分割按钮)组件的使用 ...
- 第二百零六节,jQuery EasyUI,Menu(菜单)组件
jQuery EasyUI,Menu(菜单)组件 学习要点: 1.加载方式 2.菜单项属性 3.菜单属性 4.菜单事件 5.菜单方法 本节课重点了解 EasyUI 中 Menu(菜单)组件的使用方法, ...
- 详解Bootstrap下拉菜单组件
bootstrap框架中的下拉菜单组件是一个独立的组件,根据不同的版本,他对应的文件: less 对应的源码文件为:dropdowns.less sass对应的源码文件为:_dropdowns.scs ...
- vue2.X 自定义 侧滑菜单 组件
1.vue2.0 封装 侧滑菜单组件 Sidebar.vue <!-- 侧滑菜单 组件 --> <template> <div> <transition na ...
随机推荐
- 精尽 MyBatis 源码分析 - 整体架构
该系列文档是本人在学习 Mybatis 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释(Mybatis源码分析 GitHub 地址.Mybatis-Spring 源码分析 GitHub ...
- 我要进大厂之大数据MapReduce知识点(2)
01 我们一起学大数据 今天老刘分享的是MapReduce知识点的第二部分,在第一部分中基本把MapReduce的工作流程讲述清楚了,现在就是对MapReduce零零散散的知识点进行总结,这次的内容大 ...
- webpack : 无法加载文件 C:\Users\Eileen\AppData\Roaming\npm\webpack.ps1,因为在此系统上禁止运行脚本
报错内容: webpack : 无法加载文件 C:\Users\Eileen\AppData\Roaming\npm\webpack.ps1,因为在此系统上禁止运行脚本.有关详细信息,请参阅 http ...
- Fastjson远程代码执行漏洞复现
fastjson漏洞简介 Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式.它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令 ...
- linux的time命令
查看程序执行时间
- 学习Validator验证框架总结
在项目开发中许多地方需要加以验证,对于使用if-else简单粗暴一个一个验证,spring的validation封装了Javax ValidationI校验参数,大大缩减了代码量. 以前的分层验证,从 ...
- FL Studio中的Layer控制器之如何叠加音色
本章节将采用图文结合的方式给大家讲解电音编曲软件FL Studio中的Layer控制器是如何叠加音色的,感兴趣的朋友可以一起进来交流哦. Layer控制器也是FL Studio中一个特别有用的插件,主 ...
- Java基础教程——字符流
字符流 字节流服务文本文件时,可能出现中文乱码.因为一个中文字符可能占用多个字节. 针对于非英语系的国家和地区,提供了一套方便读写方式--字符流. java.io.Reader java.io.Wri ...
- 从零开始了解多线程知识之开始篇目 -- jvm&volatile
CPU多核缓存存储结构图 电脑存储结构概念 多CPU 一个现代计算机通常由两个或者多个CPU,如果要运行多个程序(进程)的话,假如只有 一个CPU的话,就意味着要经常进行进程上下文切换 因为单CPU即 ...
- sql中count(1)、count(*)与count(列名)的区别
1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是 ...