java 图形化小工具Abstract Window Toolit 菜单项

- MenuBar: 菜单条,菜单的容器。
- Menu: 菜单组件,菜单项的容器,它也是Menultem的子类,所以可作为菜单项使用。
- PopupMenu: 上下文菜单组件(右键菜单组件)。
- MenuItem: 菜单项组件。
- CheckboxMenuItem: 复选框菜单组件。
- MenuShortcut: 菜单快捷键组件。

- MenuBar 菜单栏
- Menu 菜单名
- MenuItem 菜单子项
- popupMenu 右键菜单
- e.consume();//结束事件传播。
import java.awt.*;
import java.awt.event.*; /**
* @ClassName MenuTest
* @projectName: object1
* @author: Zhangmingda
* @description: XXX
* date: 2021/5/6.
*/
public class MenuTest {
public static void main(String[] args) {
Frame frame = new Frame("记事本");
//关闭按钮动作
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("窗口关闭");
System.exit(0);
}
});
//文本框
TextArea textArea = new TextArea(15,60);
frame.add(textArea); //菜单栏
MenuBar menuBar = new MenuBar();
//菜单
Menu fileMenu = new Menu("文件");
Menu editMenu = new Menu("编辑"); //监听点击事件
ActionListener menuItemListener = e -> {
String cmd = e.getActionCommand();
System.out.println("点击了菜单:" + cmd);
if (cmd.equals("退出")){
System.exit(0);
}
};
//文件菜单项
MenuItem newFileItem = new MenuItem("新建");
MenuItem saveFileItem = new MenuItem("保存");
MenuItem exitItem = new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X)); //设置快捷键:new MenuShortcut(KeyEvent.VK_X)
//添加监听点击事件
newFileItem.addActionListener(menuItemListener);
saveFileItem.addActionListener(menuItemListener);
exitItem.addActionListener(menuItemListener);
//文件菜单项组件组装
fileMenu.add(newFileItem);
fileMenu.add(saveFileItem);
fileMenu.add(exitItem);
//编辑菜单项
MenuItem autoLen = new MenuItem("自动换行");
MenuItem copyItem = new MenuItem("复制");
MenuItem pasteItem = new MenuItem("粘贴");
Menu formatMenu = new Menu("格式");
MenuItem addNote = new MenuItem("注释");
MenuItem cancleNote = new MenuItem("取消注释");
formatMenu.add(addNote);formatMenu.add(cancleNote);
//编辑菜单项组装
editMenu.add(autoLen);
editMenu.add(new MenuItem("-")); //分割线
editMenu.add(copyItem);
editMenu.add(pasteItem);
editMenu.add(new MenuItem("-"));
editMenu.add(formatMenu);
//菜单栏,添加菜单
menuBar.add(fileMenu);
menuBar.add(editMenu);
frame.setMenuBar(menuBar); //右键菜单
PopupMenu popupMenu = new PopupMenu();
popupMenu.add(new MenuItem("复制"));
popupMenu.add(new MenuItem("粘贴"));
frame.add(popupMenu); //当前窗口添加右键菜单窗口 //文本框内鼠标松开,右键触发的动作
textArea.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()){ //如果是右键点击后的松开动作
popupMenu.show(textArea,e.getX(),e.getY());
e.consume();//结束事件。阻止事件被其他监听器捕获:比如windows自带的右击弹窗动作
}
}
});
frame.setLocation(400,300);
frame.pack();
frame.setVisible(true); }
}



java 图形化小工具Abstract Window Toolit 菜单项的更多相关文章
- java 图形化小工具Abstract Window Toolit
老掉牙的历史 Java1.0在发布的时候,就为我们提供了GUI操作的库,这个库系统在所有的平台下都可以运行,这套基本的类库被称作抽象窗口工具集(Abstract Window Toolit),简称 ...
- java 图形化小工具Abstract Window Toolit :画笔Graphics,画布Canvas(),弹球小游戏
画笔Graphics Java中提供了Graphics类,他是一个抽象的画笔,可以在Canvas组件(画布)上绘制丰富多彩的几何图和位图. Graphics常用的画图方法如下: drawLine(): ...
- java 图形化小工具Abstract Window Toolit 事件处理
事件处理设计到了三个对象: EventSource(事件源):事件发生的场所,通常就是各个组件,例如按钮.窗口,菜单等. Event (事件封装了GUI组件上发生的特定事情(通常就是一次用户操作).如 ...
- java 图形化小工具Abstract Window Toolit 常用组件:对话框Dialog FileDialog
对话框 Dialog是Window类的子类,是1个容器类,属于特殊组件,对话框是可以独立存在的顶级窗口,因此用法与普通窗口的用法几乎完全一样.但对话框有如下两点需要注意. (1),对话框通常依赖于其他 ...
- java 图形化小工具Abstract Window Toolit ImageIO缩放图片,添加水印
实现步骤: 读取图像Image src = ImageIO.read 创建目标图像BufferedImage distImage = new BufferedImage(dstWidth, dstHe ...
- java 图形化小工具Abstract Window Toolit 画笔 处理位图
具体编程来处理位图 知识点: 实现逻辑: 画板上的图片 new BufferedImage(canvasWidth,canvasHeight,BufferedImage.TYPE_INT_BGR); ...
- java 图形化小工具Abstract Window Toolit 常用组件
基本组件 Button: 按钮,可接受单击操作 Canvas: 用于绘图的画布 Checkbox: 复选框组(也可变成单选框组件) CheckboxGroup: 用于将多个checkbox组件组合成一 ...
- java 图形化小工具Abstract Window Toolit ;布局管理器FlowLayout流式布局;BorderLayout边界布局;GridLayout网格布局;CardLayou重叠卡片布局;BoxLayout方框布局;绝对定位
1.FlowLayout流式布局管理器: FlowLayout布局管理器中,组件像水流一样向某方向流动(排列),遇到障碍(边界)就折回,重头开始排列 .在默认情况下,FlowLayout局管理器从左向 ...
- 转:二十七、Java图形化界面设计——容器(JFrame)
转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...
随机推荐
- vue局部过滤器和全局过滤器
全局过滤器在main.js中写 //注册全局过滤器 Vue.filter('wholeMoneyFormat',(value)=>{ return '¥'+Number(value).toF ...
- Vue自定义组件实现v-model指令
Tips: 本文所描述的Vue均默认是Vue2版本 在我们初次接触Vue的时候,一定会了解到一个语法糖,那就是v-model指令,它带给我们的第一印象就是它可以实现双向绑定 那么,什么是双向绑定?通俗 ...
- BZOJ 3926 诸神眷顾的幻想乡
BZOJ 3926 诸神眷顾的幻想乡 开始看错题看成了每个点度数不超过20 后来翻了翻题解原来看错题的不止我一个 既然叶子数量不超过20,考虑树上的任何一条路径,以任何点为根时,如果它不是一条从上到下 ...
- 洛谷 P3783 - [SDOI2017]天才黑客(前后缀优化建图)
题面传送门 神仙题一道. 首先注意到这里的贡献涉及到边的顺序,并且只与相邻的边是什么有关,因此不难想到一个做法--边转点,点转边,具体来说对于每条边 \(e\),我们将其拆成两个点 \(in_e,ou ...
- Vue 中使用 TypeScript axios 使用方式
Vue 中使用 TypeScript axios 使用方式 方式一 import axios from 'axios'; Vue.prototype.$axios = axios; // 在 .vue ...
- python项目——新闻管理系统
DAO(Data Access Object) 数据访问对象是一个面向对象的数据库接口 控制台的输入输出都是再app.py里面完成的 mysql_db.py import mysql.connect ...
- SQL-用到的数据库语句总结
0.SELECT * FROM CHARACTER_SETS LIMIT 0,10 #从CHARACTER_SETS表中,从第1行开始,提取10行[包含第1行] 1.SELECT * FROM ...
- Hive(三)【DDL 数据定义】
目录 一.DDL数据定义 1.库的DDL 1.1创建数据库 1.2查询数据库 1.3查看数据库详情 1.4切换数据库 1.5修改数据库 1.6删除数据库 2.表的DDL 2.1创建表 2.2管理表(内 ...
- 内存管理——array new,array delete
1.array new array new就是申请一个数组空间,所以在delete的时候一定不能忘记在delete前加[] delete加上[]符号以后,就相当于告诉系统"我这里是数组对象, ...
- Linux下强制踢掉登陆用户
1.pkill -kill -t tty 例:pkill -kill -t tty1