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) 程序是为了方便用户使用的, ...
随机推荐
- emoji表情等特殊字符处理和存储的两个方案
方案1.改数据库配置 使之支持emoji表情等特殊字符,小公司或者个人开发还好,大公司用此方案代价较大. 以mysql为例,改配置方法参考:https://blog.csdn.net/u0107373 ...
- Windwos安装Node.js和npm的详细步骤
How to Install Node.js and NPM on Windows Node.js和npm 安装 Node.js 的时候会自动安装 npm ,并且 npm 就是 Node.js 的包管 ...
- 文本分类:Keras+RNN vs传统机器学习
摘要:本文通过Keras实现了一个RNN文本分类学习的案例,并详细介绍了循环神经网络原理知识及与机器学习对比. 本文分享自华为云社区<基于Keras+RNN的文本分类vs基于传统机器学习的文本分 ...
- 洛谷 P4569 - [BJWC2011]禁忌(AC 自动机+矩阵乘法)
题面传送门 又好久没做过 AC 自动机的题了,做道练练手罢( 首先考虑对于某个固定的字符串怎样求出它的伤害,我们考虑贪心,每碰到出现一个模式串就将其划分为一段,最终该字符串的代价就是划分的次数.具体来 ...
- R语言与医学统计图形-【20】ggplot2图例
ggplot2绘图系统--图例:guide函数.标度函数.overrides.aes参数 图例调整函数guide_legend也属于标度函数,但不能单独作为对象使用,即不能如p+guide_legen ...
- EXCEL如何用公式提取一列中的唯一值和不重复值
说明:思路用的很新奇,也对COUNTIF有了更深一步的了解,但是,对于百行数据运算速度特别低,不适合数据多的使用 当面对一堆数据,我们要提取一列的唯一值的时候,如果单纯用人为一个个判断,显然是不科学的 ...
- 使用Mybatis出现的问题+配置优化+ResultMap
一.可能出现的问题 1.Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: ...
- 【Redis】Sentinel 哨兵模式
Sentinel(哨兵模式) 目录 Sentinel(哨兵模式) 哨兵模式的三个定时任务 Sentinel(哨兵)与Sentinel .主服务器.从服务器之间的连接 检测下线状态 选择领头 Senti ...
- HDFS04 HDFS的读写流程
HDFS的读写流程(面试重点) 目录 HDFS的读写流程(面试重点) HDFS写数据流程 网络拓扑-节点距离计算 机架感知(副本存储节点的选择) HDFS的读数据流程 HDFS写数据流程 客服端把D: ...
- A Child's History of England.45
To forgive these unworthy princes was only to afford them breathing-time for new faithlessness. They ...