JMenuItem的事件处理:



由于JMenuItem继承AbstractButton类,因此JMenuItem也具备了许多AbstractButton的特性,当然也包含了事件处理的机制. JMenuItem的事件处理机制是类似JButton的事件处理模式,换名话说,当按下JMenuItem组件时就如同按下JButton组件一般,均会产生 ActionEvent事件,我们来看下面这一范例:

JMenuItem5.java
import javax.swing.*;
import java.awt.event.*;

public class JMenuItem5 extends JFrame {
	JTextArea theArea = null;

	public JMenuItem5() {
		super("JMenuItem5");
		theArea = new JTextArea();
		theArea.setEditable(false);
		getContentPane().add(new JScrollPane(theArea));
		JMenuBar MBar = new JMenuBar();
		MBar.setOpaque(true);

		JMenu mfile = buildFileMenu();
		MBar.add(mfile);
		setJMenuBar(MBar);
	}

	public JMenu buildFileMenu() {

		JMenu thefile = new JMenu("File");
		thefile.setMnemonic('F');

		JMenuItem newf = new JMenuItem("New", new ImageIcon("icons/new24.gif"));
		JMenuItem open = new JMenuItem("Open",
				new ImageIcon("icons/open24.gif"));
		JMenuItem close = new JMenuItem("Close", new ImageIcon(
				"icons/close24.gif"));
		JMenuItem quit = new JMenuItem("Exit",
				new ImageIcon("icons/exit24.gif"));

		newf.setMnemonic('N');
		open.setMnemonic('O');
		close.setMnemonic('L');
		quit.setMnemonic('X');

		newf.setAccelerator(KeyStroke.getKeyStroke('N',
				java.awt.Event.CTRL_MASK, false));
		open.setAccelerator(KeyStroke.getKeyStroke('O',
				java.awt.Event.CTRL_MASK, false));
		close.setAccelerator(KeyStroke.getKeyStroke('L',
				java.awt.Event.CTRL_MASK, false));
		quit.setAccelerator(KeyStroke.getKeyStroke('X',
				java.awt.Event.CTRL_MASK, false));

		newf.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				theArea.append("- MenuItem New Performed -\n");
			}
		});

		open.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				theArea.append("- MenuItem Open Performed -\n");
			}
		});

		close.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				theArea.append("- MenuItem Close Performed -\n");
			}
		});

		quit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		thefile.add(newf);
		thefile.add(open);
		thefile.add(close);
		thefile.addSeparator();
		thefile.add(quit);

		return thefile;
	}// end of buildFileMenu()

	public static void main(String[] args) {

		JFrame F = new JMenuItem5();
		F.setSize(400, 200);
		F.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});// end of addWindowListener
		F.setVisible(true);
	} // end of main
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java JMenuItemJava Swing库中的一个组件,它代表了一个可单击的菜单项。这个组件通常被添加到菜单栏中,使得用户可以在程序中执行一些特定的任务。 以下是JMenuItem的主要特性: 1. **菜单事件处理**:当用户点击JMenuItem时,可以触发相应的处理程序。例如,可以用来改变一个变量的状态,触发某个动画效果,或者更新UI等。 2. **文本标签**:通常用于在菜单中显示文字或图片,这些文字或图片表示了JMenuItem的功能或操作。 3. **图标**:JMenuItem可以带有图标,这有助于用户更直观地理解该项的功能。 4. **复选框**:某些JMenuItem可能带有复选框,允许用户选择多个选项。 5. **快捷键**:JMenuItem可以设置快捷键,这样用户就可以通过按下键盘上的键来快速执行该项功能。 使用JMenuItem的示例代码可能如下: ```java import javax.swing.*; public class Main { public static void main(String[] args) { // 创建 JFrame 实例 JFrame frame = new JFrame("JMenuItem Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 200); // 创建菜单栏和菜单 JMenuBar menuBar = new JMenuBar(); JMenu fileMenu = new JMenu("File"); JMenuItem newMenuItem = new JMenuItem("New"); JMenuItem openMenuItem = new JMenuItem("Open"); fileMenu.add(newMenuItem); fileMenu.add(openMenuItem); menuBar.add(fileMenu); // 将菜单栏添加到 JFrame 中 frame.setJMenuBar(menuBar); // 设置鼠标点击菜单项时的操作 newMenuItem.addActionListener(e -> { System.out.println("New menu item clicked"); }); // 显示窗口并运行事件循环 frame.setVisible(true); } } ``` 在这个示例中,我们创建了一个包含两个菜单项("New"和"Open")的菜单栏,并设置了当用户点击"New"菜单项时执行的操作。这样,当用户点击"New"菜单项时,控制台将打印出"New menu item clicked"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值