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) 程序是为了方便用户使用的, ...
随机推荐
- 访问ajax请求后的结果
let getJPM = (function() { let result; let url ="xxx"; $.ajax({ type: "post", ur ...
- ES6学习 第五章 正则的扩展
前言 本章介绍正则的扩展.有些不常用的知识了解即可. 本章原文链接:正则的扩展 RegExp 构造函数 从 ES6 开始,如果RegExp构造函数第一个参数是一个正则对象,并且第二个标志存在且为标志参 ...
- vue3 学习笔记(九)——script setup 语法糖用了才知道有多爽
刚开始使用 script setup 语法糖的时候,编辑器会提示这是一个实验属性,要使用的话,需要固定 vue 版本. 在 6 月底,该提案被正式定稿,在 v3.1.3 的版本上,继续使用但仍会有实验 ...
- Atcoder Grand Contest 033 D - Complexity(dp)
Atcoder 题面传送门 & 洛谷题面传送门 首先 \(n^5\) 的暴力非常容易想,设 \(dp_{a,b,c,d}\) 表示以 \((a,b)\) 为左上角,\((c,d)\) 为右下角 ...
- CSP-S2021 挂分记
赛前 数了数,这是我第五次来南航,不知道以后还有机会了(2018 NOIP, 2019CSP, 2020CSP, 2020NOIP). 上午一觉睡到 10 点,学了一下感觉很有用的 BIT 倍增,顺手 ...
- GWAS分析结果中pvalue/p.ajust为0时如何处理?
在GWAS分析的结果中,偶尔会遇到到pvalue为0的SNP位点,这时如果直接做曼哈顿或QQ图,会出错,因为log0无意义. 此时,该如何处理? 如果你用的是Plink1.9来做的GWAS,可加一个参 ...
- lua_newthread的真正意义
lua_newthread 这个接口,存在误导性,很多人第一次试图用它来解决多线程问题时,都会入坑. 实际上,这个接口真正的用法,是给那些在lua更底层的某些行为(通常是递归)导致了lua的栈溢出而准 ...
- Vue2全家桶+Element搭建的PC端在线音乐网站
目录 1,前言 2,已有功能 3,使用 4,目录结构 5,页面效果 登录页 首页 排行榜 歌单列表 歌单详情 歌手列表 歌手详情 MV列表 MV详情 搜索页 播放器 1,前言 项目基于Vue2全家桶及 ...
- Spark(十一)【SparkSQL的基本使用】
目录 一. SparkSQL简介 二. 数据模型 三. SparkSQL核心编程 1. IDEA开发SparkSQL 2. SparkSession 创建 关闭 获取SparkContext 3. D ...
- 基于 vue-cli 的 lib-flexible 适配
基于 vue-cli3.0 的 lib-flexible 适配方案 第一步:下载安装相关依赖 第二步:创建 vue.config.js 文件并配置 第三步:在 main.js 中引入 lib-flex ...