窗体菜单栏的创建与使用

------------------siwuxie095

工程名:TestSwingMenuBar

包名:com.siwuxie095.menubar

类名:MyFrame.java

工程结构目录如下:

MyFrame.java:


package com.siwuxie095.menubar;

import java.awt.BorderLayout;

import java.awt.EventQueue;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;

import javax.swing.JCheckBoxMenuItem;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JRadioButtonMenuItem;

import javax.swing.JSeparator;

import javax.swing.UIManager;

import javax.swing.UnsupportedLookAndFeelException;

import javax.swing.border.EmptyBorder;

import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;

import javax.swing.ImageIcon;

public class MyFrame extends JFrame {

private JPanel contentPane;

/**

* Launch the application.

*/

public static
void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

public
void run() {

try {

MyFrame frame = new MyFrame();

frame.setVisible(true);

} catch (Exception e) {

e.printStackTrace();

}

}

});

}

/**

* Create the frame.

*/

public MyFrame() {

//设定成 Windows 样式的 LookAndFeel

try {

UIManager.setLookAndFeel(new WindowsLookAndFeel());

} catch (UnsupportedLookAndFeelException e) {

e.printStackTrace();

}

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setBounds(100, 100, 450, 300);

//创建一个 JMenuBar

JMenuBar menuBar = new JMenuBar();

//将这个 JMenuBar 设定为当前窗体的菜单栏

setJMenuBar(menuBar);

JMenu mnFile = new JMenu("File");

menuBar.add(mnFile);

JMenuItem mntmOpen = new JMenuItem("Open");

mntmOpen.setIcon(new ImageIcon(MyFrame.class.getResource("/javax/swing/plaf/metal/icons/ocean/directory.gif")));

mnFile.add(mntmOpen);

JMenuItem mntmClose = new JMenuItem("Close");

mntmClose.setIcon(new ImageIcon(MyFrame.class.getResource("/javax/swing/plaf/metal/icons/ocean/close.gif")));

//对菜单项:Close 添加 actionPerformed 事件

//点击 Close 关闭程序(注意:添加鼠标点击事件无效)

mntmClose.addActionListener(new ActionListener() {

public
void actionPerformed(ActionEvent e) {

System.exit(0);

}

});

mnFile.add(mntmClose);

JMenu mnEdit = new JMenu("Edit");

menuBar.add(mnEdit);

JMenuItem mntmUndo = new JMenuItem("Undo");

mnEdit.add(mntmUndo);

JMenuItem mntmRedo = new JMenuItem("Redo");

mnEdit.add(mntmRedo);

JMenu mnColor = new JMenu("Color");

mnEdit.add(mnColor);

JMenuItem mntmRed = new JMenuItem("Red");

mnColor.add(mntmRed);

JMenuItem mntmGreen = new JMenuItem("Green");

mnColor.add(mntmGreen);

JMenuItem mntmBlue = new JMenuItem("Blue");

mnColor.add(mntmBlue);

JMenu mnHelp = new JMenu("Help");

menuBar.add(mnHelp);

JCheckBoxMenuItem chckbxmntmC1 = new JCheckBoxMenuItem("C1");

chckbxmntmC1.setSelected(true);

mnHelp.add(chckbxmntmC1);

JCheckBoxMenuItem chckbxmntmC2 = new JCheckBoxMenuItem("C2");

//对菜单项:C2 添加 actionPerformed 事件

chckbxmntmC2.addActionListener(new ActionListener() {

public
void actionPerformed(ActionEvent e) {

//输出该选项是否被选中

System.out.println(chckbxmntmC2.getState());

}

});

mnHelp.add(chckbxmntmC2);

JCheckBoxMenuItem chckbxmntmC3 = new JCheckBoxMenuItem("C3");

chckbxmntmC3.setSelected(true);

mnHelp.add(chckbxmntmC3);

//分隔线,可以使用代码实现,

//也可以使用控件(组件) JSeparator 拖动实现

JSeparator separator = new JSeparator();

mnHelp.add(separator);

JRadioButtonMenuItem rdbtnmntmR1 = new JRadioButtonMenuItem("R1");

mnHelp.add(rdbtnmntmR1);

JRadioButtonMenuItem rdbtnmntmR2 = new JRadioButtonMenuItem("R2");

rdbtnmntmR2.setSelected(true);

mnHelp.add(rdbtnmntmR2);

JRadioButtonMenuItem rdbtnmntmR3 = new JRadioButtonMenuItem("R3");

mnHelp.add(rdbtnmntmR3);

ButtonGroup group=new ButtonGroup();

group.add(rdbtnmntmR1);

group.add(rdbtnmntmR2);

group.add(rdbtnmntmR3);

contentPane = new JPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

contentPane.setLayout(new BorderLayout(0, 0));

}

}

将窗体
JFrame 的 LookAndFeel 设定为 Windows

向窗体 JFrame 添加一个 JMenuBar,添加时会给出

提示:Menu bar would be placed here

添加完成,注意: JMenuBar 是和 contentPane 同级,而不是

在 contentPane 内

需要为 JMenuBar 添加元素

(1)添加 JMenu 和 JMenuItem

JMenu 是一个菜单,而 JMenuItem 是一个菜单元素(菜单项)

每一个
JMenu 可以包含 JMenu 和 JMenuItem,即 可以有子菜单

(2)添加 JCheckBoxMenuItem 和 JRadioButtonMenuItem

JCheckBoxMenuItem 是复选框组成的菜单项,其 selected 属性可以设定默认勾选项

「当对元素(菜单项)的状态进行设定时需要用到复选框」

JRadioButtonMenuItem 是单选按钮组成的菜单项,其 selected 属性可以设定默认勾选项

需要将
JRadioButtonMenuItem 添加到 ButtonGroup,才能实现单选

「ButtonGroup 本身不是控件(组件),不能放到容器中,且不可视」

(3)添加
分隔线:可以通过控件(组件) JSeparator 实现菜单栏的分隔

(4)当
菜单
创建完毕后,还可以设定其
字体、对齐方式、图标等,

还要对具体的
菜单项
指定动作(添加
actionPerformed 事件)

如:为
Close 菜单项添加 actionPerformed 事件,当点击 Close 时,关闭程序

运行程序:

【made by siwuxie095】

时间: 2024-12-15 20:55:32

窗体菜单栏的创建与使用的相关文章

WinForm MDi子窗体最大化导致子窗体标题栏和主窗体菜单栏合并问题的解决方法

在主窗体菜单栏的ItemAdded事件中编写如下代码: *msMain是我的主窗体菜单栏的Name属性值 //子窗体最大化不显示图标 private void msMain_ItemAdded(object sender, ToolStripItemEventArgs e) { if (e.Item.Text.Length == 0) { e.Item.Visible = false; } else { e.Item.Visible = true; } } 说明: 打开的子窗体最大化的时候,菜单

无边框窗体、后台创建控件、简单通讯

一.无边框窗体 1.控制按钮如何制作: 就是放置可以点击的控件,不局限于使用按钮或是什么别的,只要可以点击能触发点击事件就可以了 (1)美化一下的话那就可以把鼠标移入,移出,按下三个事件让按钮改变样式 (2)如何获取图片的相对路径 //鼠标移入时显示的图片 private void pictureBox1_MouseEnter(object sender, EventArgs e) { pictureBox1.BackgroundImage = Image.FromFile(Applicatio

无边框窗体和后台创建控件

1.无边框窗体 最小化 最大化 关闭 按钮 不一定非要用按钮来做, 可以用图片 写事件,加上鼠标 移入移出 点击 来操作 MouseEnter-鼠标移入的时候发生的事件 private void pictureBox1_MouseEnter(object sender, EventArgs e) { pictureBox1.BackgroundImage = Image.FromFile(Application.StartupPath + "\\..\\..\\images\\btn_close

微信公众号开发(4)---使用开源组件开发自定义菜单栏的创建

我们引入的开源微信开发的依赖中,对于微信菜单的创建所需要的参数进行了很好的封装,我们只需要按照微信文档开发的规范,进行参数的设置就好了-- 关于微信菜单开发的格式: { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单

ACCESS中的窗体、报表、宏模块等(ACCESS 2000)

窗体: 分为数据操作窗体,它包括单页.多页.连续.子窗口 控制窗体 信息交互窗体 窗体三种视图:“设计”视图.“窗体”视图.“数据表”视图 窗体建立的五种方式: 一:自动创建窗体 二:窗体向导(一对多关系可以选择带子窗体的窗体) 三:设计视图 四:图表向导(如果同时存在轴和系列好么数据只能有一个) 五:数据透视表向导创建类似于交叉表式的窗体.需要EXCEL的支持 自动创建窗体的三种样式:纵栏式.表格式.数据表窗体 设计视图窗口的构成: 五个区域,每个区域称为“节”,分别称为“窗体页眉”.“页面页

.Net学习 第3季02 winform应用程序 MDI窗体设计 menuStrip

窗体2.3.4...只落在窗体1(父窗体)的范围内并且可以全部显示的设计---MDI窗体设计 在窗体1中创建menuStrip类的对象(菜单栏),设置其中一个的点击事件为显示窗体2.3.4 private void 显示子窗体ToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); Form3 f3 = new Form3(); f3.Show(); Form4 f4 = ne

AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)

/* * 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用. * * ------------------------------------------------------------------- * * 使用前提:已搭建好AE的GIS基本框架,包括TOC.mapcontrol.toolbar拖控件,mxd.shp文件载入显示,查看图层属性表等 * * --------------------------------------------------

【Windows编程】系列第七篇:Menubar的创建和使用

上一篇我们学习了利用windows API创建工具栏和菜单栏,与上一篇紧密联系的就是菜单栏,菜单栏是一个大多数复杂一些的Windows应用程序不可或缺的部分.比如下图就是Windows自带的记事本的菜单栏: 菜单一般都是在标题栏下,工具栏以上,常常叫主菜单或顶级菜单(top-level menu),顶级菜单可能还会有弹出菜单(popup menu)或子菜单(submenu).弹出菜单还有被“选中”(checked)状态,各菜单还有启用.禁用状态. 每一个菜单都有一个ID与之对应,当某个菜单被点击

VSTO学习(六)——创建Outlook解决方案

本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案的,所以本专题中将为大家介绍下Outlook相关的内容.我们从Visual Studio 2010 中Office节点下的模板中我们可以看到,Outlook只有外接程序的模板,并没有提供像Word或Excel这样的文档级的模板,所以VSTO没有为Outlook解决方案创建宿主项和宿主控件(Excel和Word中VSTO都为他们提供了宿主项和宿主控件,因为这