P18 JMenuBar菜单栏

news/2024/10/19 9:38:00/

P18 JMenuBar菜单栏

  • 1.概述
  • 2.代码实例
  • 3.效果演示

系统:Win10
Java:1.8.0_333
IDEA:2020.3.4
Gitee:https://gitee.com/lijinjiang01/JavaSwing

1.概述

JMenuBar:菜单栏。菜单栏组件添加到 JFrame 窗口后,在窗口的内容显示区域的顶部出现。实现一个菜单栏主要涉及三种类:
(1)JMenuBar:表示一个菜单栏。
(2)JMenu:表示菜单栏上的一个一级菜单。
(3)JMenuItem, JCheckBoxMenuItem, JRadioButtonMenuItem:表示一级菜单下的一个子菜单项,三者分别表示 普通的子菜单、带复选框的子菜单、带单选按钮的子菜单。

提示:JMenu 继承自 JMenuItem,所以一个 JMenu 也可以当做是一个二级子菜单项,通过 JMenu 和 JMenuItem 之间的嵌套,可实现多级子菜单效果。

JMenu、JCheckBoxMenuItem、JRadioButtonMenuItem 均继承自 JMenuItem,下面介绍其中较常用的方法:
JMenuItem 常用构造方法:

/*** 参数说明:*     text: 菜单显示的文本*     icon: 菜单显示的图标*/
JMenuItem()JMenuItem(String text)JMenuItem(Icon icon)JMenuItem(String text, Icon icon)

JMenuItem 常用方法:

// 设置菜单显示的文本
void setText(String text)// 设置菜单显示的图标
void setIcon(Icon defaultIcon)// 设置菜单的键盘助记符
void setMnemonic(int mnemonic)
// 设置修改键,使用键盘快捷键直接触发菜单项的动作
void setAccelerator(KeyStroke keyStroke)
/** 例如按下 ALT+N 键触发菜单项动作:*     menuItem.setMnemonic(KeyEvent.VK_N);*     menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.ALT_MASK));*/// 添加菜单被点击的监听器
void addActionListener(ActionListener l)// 绑定菜单项的动作命令名称,如果所有菜单项使用同一个监听器,
// 可以再监听器回调时通过命令名称区别是哪个菜单项触发的动作。
void setActionCommand(String actionCommand)

JCheckBoxMenuItem、JRadioButtonMenuItem 常用方法:

// 设置 复选框/单选按钮 是否选中
void setSelected(boolean b)// 判断 复选框/单选按钮 是否选中
boolean isSelected()// 添加 复选框/单选按钮 状态被改变的监听器
void addChangeListener(ChangeListener l)
JMenu 常用方法:
// 添加 子菜单 到 JMenu 中
JMenuItem add(JMenuItem menuItem)// 添加一个子菜单分割线
void addSeparator()

2.代码实例

import com.lijinjiang.beautyeye.BeautyEyeLNFHelper;
import javax.swing.*;
import java.awt.*;public class Demo01 {public static void main(String[] args) {try {BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.generalNoTranslucencyShadow;BeautyEyeLNFHelper.launchBeautyEyeLNF();} catch (Exception e) {e.printStackTrace();}JFrame frame = new JFrame();frame.setTitle("Demo01");frame.setSize(new Dimension(400, 300));JMenuBar menuBar = new JMenuBar(); // 创建一个菜单栏JMenu fileMenu = new JMenu("文件"); // 创建一级菜单JMenu editMenu = new JMenu("编辑"); // 创建一级菜单JMenu viewMenu = new JMenu("视图"); // 创建一级菜单JMenu helpMenu = new JMenu("帮助"); // 创建一级菜单// 文件菜单JMenuItem newMenuItem = new JMenuItem("新建"); // 创建一级子菜单JMenuItem openMenuItem = new JMenuItem("打开");JMenuItem exitMenuItem = new JMenuItem("退出");fileMenu.add(newMenuItem);fileMenu.add(openMenuItem);fileMenu.addSeparator();fileMenu.add(exitMenuItem);// 编辑菜单JMenuItem copyMenuItem = new JMenuItem("复制");JMenuItem pasteMenuItem = new JMenuItem("粘贴");editMenu.add(copyMenuItem);editMenu.add(pasteMenuItem);// 视图菜单JCheckBoxMenuItem checkBoxMenuItem01 = new JCheckBoxMenuItem("复选框子菜单01");JCheckBoxMenuItem checkBoxMenuItem02 = new JCheckBoxMenuItem("复选框子菜单02");JCheckBoxMenuItem checkBoxMenuItem03 = new JCheckBoxMenuItem("复选框子菜单03");JRadioButtonMenuItem radioButtonMenuItem01 = new JRadioButtonMenuItem("单选按钮子菜单01");JRadioButtonMenuItem radioButtonMenuItem02 = new JRadioButtonMenuItem("单选按钮子菜单02");JRadioButtonMenuItem radioButtonMenuItem03 = new JRadioButtonMenuItem("单选按钮子菜单03");ButtonGroup buttonGroup = new ButtonGroup(); // 单选按钮要生效,需要放到一个按钮组中buttonGroup.add(radioButtonMenuItem01);buttonGroup.add(radioButtonMenuItem02);buttonGroup.add(radioButtonMenuItem03);viewMenu.add(checkBoxMenuItem01);viewMenu.add(checkBoxMenuItem02);viewMenu.add(checkBoxMenuItem03);viewMenu.addSeparator();viewMenu.add(radioButtonMenuItem01);viewMenu.add(radioButtonMenuItem02);viewMenu.add(radioButtonMenuItem03);// 新建 子菜单添加监听器newMenuItem.addActionListener(e -> {System.out.println("点击新建按钮");});// 退出 子菜单添加监听器exitMenuItem.addActionListener(e -> {System.exit(0);});// 复选框子菜单01 添加监听checkBoxMenuItem01.addActionListener(e -> {System.out.println("复选框子菜单01是否被选中:" + checkBoxMenuItem01.isSelected());});// 单选按钮子菜单01 添加监听radioButtonMenuItem01.addActionListener(e -> {System.out.println("复选框子菜单01是否被选中:" + radioButtonMenuItem01.isSelected());});// 关于菜单JMenuItem aboutMenuItem = new JMenuItem("关于");helpMenu.add(aboutMenuItem);menuBar.add(fileMenu);menuBar.add(editMenu);menuBar.add(viewMenu);menuBar.add(helpMenu);frame.setJMenuBar(menuBar); // 设置菜单栏frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocationRelativeTo(null);frame.setVisible(true);}
}

3.效果演示

在这里插入图片描述


http://www.ppmy.cn/news/626044.html

相关文章

mac怎么管理顶部菜单状态栏? 怎么添加,删除, 排序移动顶部菜单状态栏图标? 超详细简单一看就会.

> mac顶部的状态栏是个好地方, 可以让你快速预览或者访问应用或者系统功能. 因此这个位置很显眼, 有时候你不喜欢系统默认的样子,喜欢做些自定义. 那么这篇文章将教你如果管理你的状态栏, 包括添加,删除, 排序. 排序图标 先按住 Command (⌘) 不放将你的鼠标移到要移动图…

g6右键菜单

import G6 from ‘antv/g6’; import insertCss from ‘insert-css’; // define the CSS with the id of your menu // 我们用 insert-css 演示引入自定义样式 // 推荐将样式添加到自己的样式文件中 // 若拷贝官方代码,别忘了 npm install insert-css insertCss(#…

【ES三周年】| 基于国产化操作系统搭建ELK日志分析平台

引入 鲲鹏认证-Kylin麒麟操作系统-ELK日志分析平台 开篇 何为ELK Stack?它又能够给我们带来什么? 综述 ELK为三个开源项目的首字母缩写,分别对应是:Elasticsearch、Logstash、Kibana,由这三个软件及其相关的组件可…

分享优秀的3D电影下载网站(下载最新 3D高清电影网站)

内容:俺进军网络也有很多年头了,所以知道的网站也不少了,收藏夹里收藏了很多,却无暇去光顾,人的时间毕竟是有限的,不同时期关注的领域是不通的,这不最近刚买了台3D电视,为看3D电影可…

互联网电影上线,手机电影院移动端就可以看电影

热爱看电影的小伙伴一定有过这样的烦恼:在旅游途中无法观看新上映的影片;在繁忙的工作中无暇抽身去影院看电影,想看的小众电影没有排片;大师新作只看一遍看不懂,想多看一遍。怎么办呢? 不要着急&#xff0c…

免费电影下载

迅雷资源,速度稳定. 我一直都在用..好东西不能一个人独享,拿出来分享.. 菜熊视讯最大的影视迅雷下载站!完全免费,并且每天还大批量更新![url]http://www.caixiong.com/?445419.htm[/url] 转载于:https://blog.51cto.com/douvip/12485

手机电影云观看

手机电影云观看 最近花了不少精力开发了一款基于云播放技术的电影视频在线观看App(名称:电影云观看),以方便平时能快速搜索和观看最新的电影,是一个比较实用的应用,由于自身技术有限,难免有很多…

腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影

本文小编给大家分享的是腾讯视频下载的视频怎么导出来_手机腾讯视频怎么缓存视频电影。相比其它的视频客户端,腾讯视频的多维度筛选,大数据比对,更有利于用户发现和推荐自己喜爱的影视剧内容。腾讯视频播放器推荐精准,越用越懂你&…