⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menuusedemo.java

📁 JAVA编程思想源代码 值得一下 很难找的
💻 JAVA
字号:
package chapter11;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
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.JPopupMenu;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;

public class MenuUseDemo extends JFrame {

	public static final int WIDTH = 250;

	public static final int HEIGHT = 200;

	private JMenuItem newItem;

	private JMenuItem openItem;

	private JMenuItem closeItem;

	private JMenuItem saveItem;

	private JMenuItem cutItem;

	private JMenuItem copyItem;

	private JMenuItem pasteItem;

	private JMenuItem cutItemPop;

	private JMenuItem copyItemPop;

	private JMenuItem pasteItemPop;

	private JRadioButtonMenuItem forwardItem;

	private JRadioButtonMenuItem backwardItem;

	private JPopupMenu popup;

	private JTextField myTextField;

	public MenuUseDemo() {
		setTitle("MenuUseDemo");
		setSize(WIDTH, HEIGHT);

		Container contentPane = getContentPane();
		JPanel textPanel = new JPanel();

		// 创建显示菜单操作的文本区
		myTextField = new JTextField("", 20);
		textPanel.add(myTextField);
		contentPane.add(textPanel);

		// 创建菜单栏,并将菜单栏加入到框架中
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		// 创建菜单及菜单项,并添加快捷键和加速器
		// “File”菜单
		JMenu fileMenu = new JMenu("File");
		// 设置菜单的快捷键
		fileMenu.setMnemonic('F');

		// 新建“New”菜单项,并添加共用的事件监听器
		newItem = fileMenu.add(new ShowAction("New"));
		// 设置菜单项的加速器
		newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
				InputEvent.CTRL_MASK));
		// 新建“Open”菜单项和监听器
		openItem = fileMenu.add(new ShowAction("Open"));
		openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
				InputEvent.CTRL_MASK));
		// 增加分隔线
		fileMenu.addSeparator();
		// 新建“Save”菜单项和监听器
		saveItem = fileMenu.add(new ShowAction("Save"));
		saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
				InputEvent.CTRL_MASK));
		// 初始设置“Save”菜单项为禁用状态
		saveItem.setEnabled(false);
		// 新建“Close”菜单项和监听器
		closeItem = fileMenu.add(new ShowAction("Close"));
		closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,
				InputEvent.CTRL_MASK));
		closeItem.setEnabled(false);
		fileMenu.addSeparator();
		// 新建“Exit”菜单项和监听器
		JMenuItem exitItem = new JMenuItem("Exit", 'T');
		exitItem.addActionListener(new AbstractAction("Exit") {
			public void actionPerformed(ActionEvent event) {
				System.exit(0);
			}
		});
		exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
				InputEvent.CTRL_MASK));
		fileMenu.add(exitItem);

		// “Edit”菜单
		JMenu editMenu = new JMenu("Edit");
		// 设置菜单的快捷键
		editMenu.setMnemonic('E');

		// 新建“Cut”菜单项和监听器
		cutItem = new JMenuItem("Cut", 'C');
		editMenu.add(cutItem);
		// 添加事件监听器
		cutItem.addActionListener(new ShowAction("Cut"));
		cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,
				InputEvent.CTRL_MASK));
		cutItem.setEnabled(false);
		// 新建“Copy”菜单项和监听器
		copyItem = new JMenuItem("Copy", 'Y');
		copyItem.addActionListener(new ShowAction("Copy"));
		copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,
				InputEvent.CTRL_MASK));
		copyItem.setEnabled(false);
		// 新建“Paste”菜单项和监听器
		pasteItem = new JMenuItem("Paste", 'P');
		pasteItem.addActionListener(new ShowAction("Paste"));
		pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
				InputEvent.CTRL_MASK));
		pasteItem.setEnabled(false);

		editMenu.add(copyItem);
		editMenu.add(pasteItem);

		// “Search”菜单
		JMenu searchMenu = new JMenu("Search");
		searchMenu.setMnemonic('S');

		// 创建单选按钮菜单项“Forward”和“Backward”
		ButtonGroup group = new ButtonGroup();
		forwardItem = new JRadioButtonMenuItem("Forward");
		forwardItem.addActionListener(new ShowAction("Forward"));
		forwardItem.setSelected(true);
		forwardItem.setEnabled(false);

		backwardItem = new JRadioButtonMenuItem("Backward");
		backwardItem.addActionListener(new ShowAction("Backward"));
		backwardItem.setEnabled(false);

		group.add(forwardItem);
		group.add(backwardItem);
		searchMenu.add(forwardItem);
		searchMenu.add(backwardItem);

		// "View"菜单
		JMenu viewMenu = new JMenu("View");
		viewMenu.setMnemonic('V');
		// 创建子菜单
		JMenu optionMenu = new JMenu("Option");
		optionMenu.setMnemonic('O');
		// 创建复选框菜单项“ToolBar”和“Status”
		JCheckBoxMenuItem toolItem = new JCheckBoxMenuItem("ToolBar");
		JCheckBoxMenuItem statusItem = new JCheckBoxMenuItem("Status");
		toolItem.addActionListener(new ShowAction("ToolBar"));
		statusItem.addActionListener(new ShowAction("Status"));
		// 将菜单项添加到子菜单中
		optionMenu.add(toolItem);
		optionMenu.add(statusItem);
		// 将子菜单添加到“View”菜单中
		viewMenu.add(optionMenu);

		// 将菜单加入到菜单栏中
		menuBar.add(fileMenu);
		menuBar.add(editMenu);
		menuBar.add(searchMenu);
		menuBar.add(viewMenu);

		// 弹出式菜单
		popup = new JPopupMenu();

		// 新建弹出式菜单中的“Cut”菜单项和监听器
		cutItemPop = new JMenuItem("Cut", 'C');
		cutItemPop.addActionListener(new ShowAction("CutPop"));
		cutItemPop.setEnabled(false);

		// 新建弹出式菜单中的“Copy”菜单项和监听器
		copyItemPop = new JMenuItem("Copy", 'Y');
		copyItemPop.addActionListener(new ShowAction("CopyPop"));
		copyItemPop.setEnabled(false);

		// 新建弹出式菜单中的“Paste”菜单项和监听器
		pasteItemPop = new JMenuItem("Paste", 'P');
		pasteItemPop.addActionListener(new ShowAction("PastePop"));
		pasteItemPop.setEnabled(false);

		popup.add(cutItemPop);
		popup.add(copyItemPop);
		popup.add(pasteItemPop);

		// 实现弹出式菜单的弹出触发器
		getContentPane().addMouseListener(new MouseAdapter() {
			public void mouseReleased(MouseEvent event) {
				if (event.isPopupTrigger())
					// 指定弹出式菜单的父组件以及显示位置
					popup
							.show(event.getComponent(), event.getX(), event
									.getY());
			}
		});
	}

	// 菜单项的共用事件监听器
	private class ShowAction extends AbstractAction {
		public ShowAction(String name) {
			super(name);
		}

		public void actionPerformed(ActionEvent event) {
			// 实现菜单项的启用和禁用控制
			if (event.getSource() == newItem || event.getSource() == openItem) {
				saveItem.setEnabled(true);
				closeItem.setEnabled(true);
				cutItem.setEnabled(true);
				copyItem.setEnabled(true);
				pasteItem.setEnabled(true);
				forwardItem.setEnabled(true);
				backwardItem.setEnabled(true);
				cutItemPop.setEnabled(true);
				copyItemPop.setEnabled(true);
				pasteItemPop.setEnabled(true);
			}
			if (event.getSource() == closeItem) {
				saveItem.setEnabled(false);
				closeItem.setEnabled(false);
				cutItem.setEnabled(false);
				copyItem.setEnabled(false);
				pasteItem.setEnabled(false);
				forwardItem.setEnabled(false);
				backwardItem.setEnabled(false);
				cutItemPop.setEnabled(false);
				copyItemPop.setEnabled(false);
				pasteItemPop.setEnabled(false);
			}
			// 在文本域中显示菜单选择结果
			myTextField.setText(getValue(Action.NAME) + " selected.");
		}
	}

	public static void main(String[] args) {
		MenuUseDemo frame = new MenuUseDemo();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);

	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -