Java~Swing中下拉式菜单JMenuBar(菜单栏)、JMenu(菜单)和JMenuItem(菜单项)的使用

下拉式菜单

  • 在GUI程序中,创建下拉式菜单需要使用三个组件:JMenuBar(菜单栏)、JMenu(单)JMenuItem(菜单项),以记事本为例,这三个组件在菜单中对应的位置如图所示。
    在这里插入图片描述

三个关键组件的介绍

1)JMenuBar:JMenuBar表示一个水平的菜单栏,它用来管理菜单,不参与同用户的交互式操作。菜单栏可以放在容器的任何位置,但通常情况下会使用顶级窗口(如JFrame、JDialog)的setJMenuBar(JMenuBar menuBar)方法将它放置在顶级窗口的顶部。JMenuBar有一个无参构造函数,创建菜单栏时,只需要使用new关键字创建JMenuBar对象即可。创建完菜单栏对象后,可以调用它的add(JMenu c)方法为其添加JMenu菜单。

(2)JMenu:JMenu表示一个菜单,它用来整合管理菜单项。菜单可以是单一层次的结构,也可以是多层次的结构。大多情况下,会使用构造函数JMenu(String text)创建JMenu菜单,其中参数text表示菜单上的文本。JMenu中还有一些常用的方法,如表所示。
在这里插入图片描述
3)JMenuItem:JMenuItem表示一个菜单项,它是菜单系统中最基本的组件。和JMenu菜单一样,在创建JMenuItem菜单项时,通常会使用构造方法JMenumItem(String text)为菜单项指定文本内容。

由于JMenuItem类是继承自AbstractButton类的,因此可以把它看成是一个按钮。如果使用无参的构造方法创建了一个菜单项,则可以调用从AbstractButton类中继承的setText(String text)方法和setIcon()方法为其设置文本和图标。

代码演示

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

public class MenuTest extends JFrame implements ActionListener
{
	private JButton redBt,greenBt,blueBt;
	
	//定义菜单有关的一些对象
	JMenuBar menuBar;//菜单栏
	JMenu colorMenu;//设置窗体背景颜色的菜单
	JMenuItem[] colorMenuItems;//设置窗体背景颜色的菜单项数组
	
	
	private void initButton()
	//初始化按钮的方法
	{
		this.setLayout(null);
		redBt = new JButton("红色");
		redBt.setSize(60, 30);
		redBt.setLocation(30, 30);
		this.add(redBt);
		greenBt = new JButton("绿色");
		greenBt.setSize(60, 30);
		greenBt.setLocation(120, 30);
		this.add(greenBt);
		blueBt = new JButton("蓝色");
		blueBt.setSize(60, 30);
		blueBt.setLocation(210, 30);
		this.add(blueBt);
		
		redBt.addActionListener(this);
		greenBt.addActionListener(this);
		blueBt.addActionListener(this);
	}
	
	//初始化菜单的方法
	private void initMenu()
	{
		colorMenu=new JMenu("设置窗体背景");
		String[] colors={"红色","绿色","蓝色"};
		colorMenuItems=new JMenuItem[3];
		//定义一个包含3个菜单项的数组
		for(int i=0;i<3;i++)
		{
			colorMenuItems[i]=new JMenuItem(colors[i]);
			//初始化每个菜单项,给菜单项进行文本的赋值
			colorMenuItems[i].addActionListener(this);
			//注册事件源菜单项和事件处理对象
			colorMenu.add(colorMenuItems[i]);
			//以菜单为对象,调用方法来添加菜单所包含的菜单项
		}
		menuBar=new JMenuBar();//初始化菜单栏
		menuBar.add(colorMenu);//将菜单添加到菜单栏上
		this.setJMenuBar(menuBar);
		//以窗体为对象,调用方法来设置窗体的菜单栏
	}
	
	public MenuTest()
	{
		this.setSize(300, 300);
		this.setTitle("菜单实例");
		initMenu();
		initButton();
		this.setVisible(true);
	}

	public void actionPerformed(ActionEvent e) 
	{
		AbstractButton item=(AbstractButton)e.getSource();
		//将动作事件的事件源强制转换为抽象的按钮对象
		if(item.getText().equals("红色"))
		{
			this.getContentPane().setBackground(Color.red);
		}
		else
		{
			if(item.getText().equals("绿色"))
			{
				this.getContentPane().setBackground(Color.green);
			}
			else
			{
				this.getContentPane().setBackground(Color.blue);
			}
		}
		
	}
}

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`JMenuItem` 是 Java Swing GUI 库的一个类,用于创建菜单项。它是 `JMenu` 类的子类,可以添加到菜单,用于触发某个操作或显示某个界面。 `JMenuItem` 类有以下常用方法: - `JMenuItem(String text)`:创建一个文本为 `text` 的菜单项。 - `addActionListener(ActionListener listener)`:为菜单项添加监听器,当用户点击菜单项时会触发监听器的 `actionPerformed` 方法。 - `setEnabled(boolean enabled)`:设置菜单项是否可用。 - `getText()`:获取菜单项的文本。 - `setIcon(Icon icon)`:设置菜单项的图标。 下面是一个简单的例子,演示如何创建一个菜单并添加菜单项: ```java import javax.swing.*; public class MenuExample { public static void main(String[] args) { JFrame frame = new JFrame("菜单示例"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建菜单栏 JMenuBar menuBar = new JMenuBar(); frame.setJMenuBar(menuBar); // 创建菜单 JMenu fileMenu = new JMenu("文件"); menuBar.add(fileMenu); // 创建菜单项 JMenuItem openItem = new JMenuItem("打开"); fileMenu.add(openItem); JMenuItem saveItem = new JMenuItem("保存"); fileMenu.add(saveItem); JMenuItem exitItem = new JMenuItem("退出"); fileMenu.add(exitItem); // 为菜单项添加监听器 exitItem.addActionListener(e -> System.exit(0)); frame.setSize(400, 300); frame.setVisible(true); } } ``` 在这个例子,我们创建了一个 `JFrame` 窗口,并在窗口创建了一个菜单栏 `JMenuBar`,和一个菜单 `JMenu`,菜单包含三个菜单项 `JMenuItem`,分别是打开、保存和退出。 我们为退出菜单项添加了监听器,当用户点击该菜单项时,程序会立即退出。 需要注意的是,这个例子菜单项只是简单的演示,实际应用菜单项的功能需要根据具体的需求进行实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值