——1、菜单组件

相关对象:

MenuBar 菜单条

Menu 菜单容器

PopupMenu 上下文菜单(右键弹出菜单组件)

MenuItem 菜单项

CheckboxMenuItem 复选框菜单项

小技巧:

1、添加这样的菜单项分割线可以直接调用add(new MenuItem("-"))实现

2、给某一个菜单项绑定快捷键,调用 new MenuItem("菜单项名称",new MenuShortcut(KeyEvent.枚举按键值,true))

案例:

package cn.dzz;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Main {
public static void main(String[] args) {
// 创建窗体
Frame frame = new Frame(); // 先把界面需要的组件创建出来
MenuBar menuBar = new MenuBar(); Menu fileMenu = new Menu("file");
Menu editMenu = new Menu("edit");
// 格式菜单嵌入在编辑菜单对象中
Menu formatMenu = new Menu("Format"); // 菜单项
MenuItem autoNextLineMenuItem = new MenuItem("autoNextLine");
MenuItem copyMenuItem = new MenuItem("copy");
MenuItem pasteMenuItem = new MenuItem("paste"); MenuItem commentMenuItem = new MenuItem("comment Ctrl + Shift + Q");
MenuItem cancelCommentMenuItem = new MenuItem("comment cancel"); // 别漏了文本编辑区
TextArea textArea = new TextArea(6,40); // 事件交互处理
commentMenuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea.append("您点击了菜单项:" + e.getActionCommand());
}
}); // 先从小的组件开始组装到一起 // 格式菜单装上注释和取消注释
formatMenu.add(commentMenuItem);
formatMenu.add(cancelCommentMenuItem);
// 再组装编辑菜单
editMenu.add(autoNextLineMenuItem);
editMenu.add(copyMenuItem);
editMenu.add(pasteMenuItem);
editMenu.add(new MenuItem("-")); // 菜单分割线
editMenu.add(formatMenu); // 再是菜单条添加菜单对象
menuBar.add(fileMenu);
menuBar.add(editMenu); // 总体布局确定
frame.setMenuBar(menuBar);
frame.add(textArea); frame.pack();
frame.setVisible(true);
}
}

效果还不错:

设置的菜单:

多点击几次之后发现没有换行,需要加上\n换行字符

textArea.append("您点击了菜单项:" + e.getActionCommand() + "\n");

弹出式菜单对象 PopupMenu

案例:

package cn.dzz;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; public class Main { public static void main(String[] args) {
// 创建窗体
Frame frame = new Frame(); // 先创建组件,之后进行布局设置
TextArea textArea = new TextArea("demo text 文本内容",6, 40);
Panel panel = new Panel();
panel.setPreferredSize(new Dimension(400,300)); // 大小
PopupMenu popupMenu = new PopupMenu(); // 右键菜单 MenuItem commentMenuItem = new MenuItem("comment");
MenuItem cancelCommentMenuItem = new MenuItem("cancelComment");
MenuItem copyMenuItem = new MenuItem("copy");
MenuItem saveMenuItem = new MenuItem("save"); // 布局组装
popupMenu.add(commentMenuItem);
popupMenu.add(cancelCommentMenuItem);
popupMenu.add(saveMenuItem);
popupMenu.add(copyMenuItem);
panel.add(popupMenu); Box verticalBox = Box.createVerticalBox();
verticalBox.add(textArea);
verticalBox.add(panel);
frame.add(verticalBox, BorderLayout.CENTER); // 事件监听设置
ActionListener actionListener = new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
String actionCommand = e.getActionCommand();
textArea.append("\n您右键菜单选择的是:" + actionCommand);
}
}; commentMenuItem.addActionListener(actionListener);
cancelCommentMenuItem.addActionListener(actionListener);
copyMenuItem.addActionListener(actionListener);
saveMenuItem.addActionListener(actionListener); // 鼠标右键监听设置
panel.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
// super.mouseReleased(e); boolean popupTrigger = e.isPopupTrigger();
if (popupTrigger) {
// 参数1 所属的父组件对象,
popupMenu.show(panel, e.getX(), e.getY());
}
}
}); frame.pack();
frame.setVisible(true);
}
}

效果:

【Java-GUI】04 菜单的更多相关文章

  1. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

  2. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  3. paip.java gui swt/jface 最佳实践

    paip.java gui swt/jface 最佳实践 1. 工具:Eclipse +jigloo4 1 2. 安装插件: 1 1. IMPORT swt lib 2 2. 新建立窗体 2 3. 运 ...

  4. java GUI (课堂笔记)

    关于java GUI Swing组件: JFrame 窗口组件 JLabel 标签 JButton 按钮组件 JTextField 单行文本框 系统控件(JDK自带) 自定义控件(模仿系统控件): 继 ...

  5. Java GUI 图书管理系统

    01 概述 一款功能强大的图书馆管理系统,功能齐全,小白/大学生项目实训,学习的不二之选. 02 技术 此系统使用 java awt 实现.java.awt是一个软件包,包含用于创建用户界面和绘制图形 ...

  6. JAVA GUI

    JAVA GUI中的事件处理:   委托事件模型:事件源对象和监听器对象具有绑定关系   一个监听器可以绑定多个事件源 一个事件源也可以绑定多个监听器 监听器有各自监听的事件类型   设置容器的布局管 ...

  7. 写在学习Java GUI之前

    Java GUI就是用Java语言开发桌面应用,而Java又有三个Java GUI库,分别为AWT,Swing和SWT/JFace. 现在要学的是Swing库. 后记:开发桌面应用,不止一种技术,现在 ...

  8. Java实现微信菜单json字符串拼接

    Java实现微信菜单json字符串拼接 微信菜单拼接json字符串方法 >>>>>>>>>>>>>>>> ...

  9. JAVA GUI 工具

    Java GUI图形界面开发工具   上大学那会儿比较主流的Java图形开发插件是:Visual Editor 和 SWT Designer, 不久又出了个Jigloo, 但去官网看了下发现这个东西也 ...

  10. [置顶] java Gui 键盘监听事件

    简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...

随机推荐

  1. python-使用pyecharts绘制各省份985学校数量图

    1.环境 代码运行环境:python3.7 相关的库:pyecharts 1.7.1 代码编辑器:visual studio code 2.目的 通过使用pyecharts库,来绘制全国各省985高校 ...

  2. 第二次大作业BLOG心得

    (1)前言: 知识点: ①ArrayLsit的知识点: ArrayList 是 Java 中的动态数组实现,它提供了自动调整大小的功能,可以根据需要动态增长或收缩. ArrayList 可以存储任意类 ...

  3. memoization(计算属性-记忆组件)

    连续两次相同传参,第二次会直接返回上次的结果,每次传参不一样,就直接调用函数返回新的结果,会丢失之前的记录,并不是完全记忆,可以在它的参数中传入state数据从而实现了类似Vue中的计算属性功能 # ...

  4. R-tree算法

    R-tree是一种用于处理空间数据的自平衡搜索树结构,特别适合于存储和查询二维或更高维度的空间对象,如点.线段.矩形等.它在地理信息系统.计算机图形学.数据库等领域有广泛应用.R树通过将空间分割成几个 ...

  5. Docker镜像下载慢/失败?Linux代理使用不便?想在无Docker环境下载镜像?试试我这款开源项目吧

    我要在这里放一段代码块 // 这是一段防爬代码块,我不介意被文章被爬取,但请注明出处 console.log("作者官网:https://www.hanzhe.site"); co ...

  6. 指令(Prompt)基本格式

    指令(Prompt)基本格式: 参考信息:包含文心一言完成任务时需要知道的必要背景和材料,如:报告.知识.数据库.对话上下文等 动作:需要文心一言帮你解决的事情,如:撰写.生成.总结.回答等 目标:需 ...

  7. 13-nginx

    关于nginx nginx是提供http服务的中间件. 这里推荐学习nginx的博客:朱双印的博客 安装 nginx的版本 主线版本(Mainline version) #最新版,不稳定 稳定版本(S ...

  8. 2019 香港区域赛 BDEG 题解

    B.Binary Tree 题意:给你一棵二叉树.有两个游戏者,回合制,他们每次可以删去这棵二叉树中的一棵满二叉树.求最后谁赢. 解法:每一棵满二叉树有奇数个节点,那么每次游戏者只能删去奇数个节点,所 ...

  9. HDOJ 6703 Array

    HDOJ 6703 Array 题目 题目链接 array *Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K ...

  10. 高通参考设计中MTP与QRD

    高通参考设计中MTP与QRD 背景 之前在调试设备树的时候,看到设备树带了一个qrd的后缀,一直没搞清楚.上网找资料也好像不是我想要的. 今天查阅lk侧的代码,发现了HW_PLATFORM_HRD这个 ...