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

📄 mymenubar.java

📁 Java版记事本 作者:黎明你好 版本:2.0 基本功能: 1.文件的打开
💻 JAVA
字号:
package notepad.firstGUI;

import java.awt.event.KeyEvent;

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.JRadioButtonMenuItem;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

import notepad.logic.MenuLogic;


public class MyMenuBar extends JMenuBar
{
	/** 序列化时为了保持版本的兼容性 */
	private static final long serialVersionUID = 1L;
	
	/** 菜单:文件、编辑、格式、帮助 */
	private JMenu file_menu, edit_menu, format_menu, view_menu, help_menu,
			style_menu;
	/** 文件菜单,的菜单项:新建、打开、保存、另存为、退出 */
	private JMenuItem item_newFile, item_openFile, item_saveFile,
			item_saveAsFile, item_Exit;
	/** 编辑菜单,的菜单项:剪切、复制、粘贴、删除;查找、查找下一个、替换;全选、时间/日期 */
	private JMenuItem item_cut, item_copy, item_paste, item_delete, item_find,
			item_findNext, item_replace, item_selectAll, item_insertNowTime;
	/** 格式菜单,的菜单项:自动换行,换行时候,是否让整个单词在一行,设置字体 */
	private JMenuItem item_setLineWrap, item_setWrapStyleWord, item_setFont;
	/** 查看菜单,的菜单项:工具箱,3种窗口风格 */
	private JMenuItem item_tool, item_style1, item_style2, item_style3;
	/** 用于单选按钮 */
	private ButtonGroup style_group;
	/** 帮助菜单项:帮助主题,关于记事本 */
	private JMenuItem item_help, item_about;
	/**次菜单条类,要添加到这个parent的JFrame上*/
	JFrame parent_frame;
	/**逻辑处理类,把所有的监控都添加到这个对象上*/
	MenuLogic logic;

	/**
	 * 构造方法
	 * @param frame
	 * @param logic
	 */
	public MyMenuBar(JFrame parent, JTextArea textArea, JTextField textField)
	{
		this.parent_frame = parent;
		this.logic = new MenuLogic(parent_frame, textArea, textField, this);
		init_menu();
	}
	public MenuLogic getLogic()
	{
		return logic;
	}
	/**
	 * 初始化,菜单条上的组件
	 */
	public void init_menu()
	{
		file_menu = new JMenu("文件(F)");
		edit_menu = new JMenu("编辑(E)");
		format_menu = new JMenu("格式(O)");
		view_menu = new JMenu("查看(V)");
		help_menu = new JMenu("帮助(H)");
		style_menu = new JMenu("风格(G)");

		item_newFile = new JMenuItem("新建(N)");
		item_openFile = new JMenuItem("打开(O)...");
		item_saveFile = new JMenuItem("保存(S)");
		item_saveAsFile = new JMenuItem("另存为(A)...");
		item_Exit = new JMenuItem("退出(X)");

		item_cut = new JMenuItem("剪切(T)");
		item_copy = new JMenuItem("复制(C)");
		item_paste = new JMenuItem("粘贴(P)");
		item_delete = new JMenuItem("删除(L)");

		item_find = new JMenuItem("查找(F)");
		item_findNext = new JMenuItem("查找下一个(N)");
		item_replace = new JMenuItem("替换(R)");

		item_selectAll = new JMenuItem("全选(A)");
		item_insertNowTime = new JMenuItem("时间/日期(D)");

		item_setLineWrap = new JCheckBoxMenuItem("自动换行(W)", false);
		item_setWrapStyleWord = new JCheckBoxMenuItem("单词为界(S)", false);
		item_setFont = new JMenuItem("字体(F)...");

		item_tool = new JCheckBoxMenuItem("工具箱(T)", false);
		item_style1 = new JRadioButtonMenuItem("Windows");
		item_style2 = new JRadioButtonMenuItem("Mac");
		item_style3 = new JRadioButtonMenuItem("Java");
		style_group = new ButtonGroup();
		item_help = new JMenuItem("帮助主题(H)");
		item_about = new JMenuItem("关于记事本(A)");

		// 设置当前模型上的键盘助记符
		file_menu.setMnemonic(KeyEvent.VK_F);
		file_menu.setDisplayedMnemonicIndex(3);
		edit_menu.setMnemonic(KeyEvent.VK_E);
		edit_menu.setDisplayedMnemonicIndex(3);
		format_menu.setMnemonic(KeyEvent.VK_O);
		format_menu.setDisplayedMnemonicIndex(3);
		view_menu.setMnemonic(KeyEvent.VK_V);
		view_menu.setDisplayedMnemonicIndex(3);
		help_menu.setMnemonic(KeyEvent.VK_H);
		help_menu.setDisplayedMnemonicIndex(3);
		style_menu.setMnemonic(KeyEvent.VK_G);
		style_menu.setDisplayedMnemonicIndex(3);
		// 设置各个菜单项上的键盘助记符,和下划线
		item_newFile.setMnemonic(KeyEvent.VK_N);
		item_newFile.setDisplayedMnemonicIndex(3);
		item_openFile.setMnemonic(KeyEvent.VK_O);
		item_openFile.setDisplayedMnemonicIndex(3);
		item_saveFile.setMnemonic(KeyEvent.VK_S);
		item_saveFile.setDisplayedMnemonicIndex(3);
		item_saveAsFile.setMnemonic(KeyEvent.VK_A);
		item_saveAsFile.setDisplayedMnemonicIndex(4);

		item_Exit.setMnemonic(KeyEvent.VK_X);
		item_Exit.setDisplayedMnemonicIndex(3);

		item_cut.setMnemonic(KeyEvent.VK_T);
		item_cut.setDisplayedMnemonicIndex(3);
		item_copy.setMnemonic(KeyEvent.VK_C);
		item_copy.setDisplayedMnemonicIndex(3);
		item_paste.setMnemonic(KeyEvent.VK_P);
		item_paste.setDisplayedMnemonicIndex(3);
		item_delete.setMnemonic(KeyEvent.VK_L);
		item_delete.setDisplayedMnemonicIndex(3);

		item_find.setMnemonic(KeyEvent.VK_F);
		item_find.setDisplayedMnemonicIndex(3);
		item_findNext.setMnemonic(KeyEvent.VK_N);
		item_findNext.setDisplayedMnemonicIndex(6);
		item_replace.setMnemonic(KeyEvent.VK_H);
		item_replace.setDisplayedMnemonicIndex(3);
		item_selectAll.setMnemonic(KeyEvent.VK_A);
		item_selectAll.setDisplayedMnemonicIndex(3);
		item_insertNowTime.setMnemonic(KeyEvent.VK_D);
		item_insertNowTime.setDisplayedMnemonicIndex(6);

		item_setLineWrap.setMnemonic(KeyEvent.VK_W);
		item_setLineWrap.setDisplayedMnemonicIndex(5);
		item_setWrapStyleWord.setMnemonic(KeyEvent.VK_S);
		item_setWrapStyleWord.setDisplayedMnemonicIndex(5);
		item_setFont.setMnemonic(KeyEvent.VK_F);
		item_setFont.setDisplayedMnemonicIndex(3);

		item_tool.setMnemonic(KeyEvent.VK_T);
		item_tool.setDisplayedMnemonicIndex(4);

		item_help.setMnemonic(KeyEvent.VK_H);
		item_help.setDisplayedMnemonicIndex(5);
		item_about.setMnemonic(KeyEvent.VK_A);
		item_about.setDisplayedMnemonicIndex(6);

		item_newFile.addActionListener(logic);
		item_openFile.addActionListener(logic);
		item_saveFile.addActionListener(logic);
		item_saveAsFile.addActionListener(logic);

		item_Exit.addActionListener(logic);
		item_cut.addActionListener(logic);
		item_copy.addActionListener(logic);
		item_paste.addActionListener(logic);
		item_delete.addActionListener(logic);

		item_find.addActionListener(logic);
		item_findNext.addActionListener(logic);
		item_replace.addActionListener(logic);

		item_selectAll.addActionListener(logic);
		item_insertNowTime.addActionListener(logic);

		item_setLineWrap.addActionListener(logic);
		item_setWrapStyleWord.addActionListener(logic);
		item_setFont.addActionListener(logic);

		item_tool.addActionListener(logic);
		item_style1.addActionListener(logic);
		item_style2.addActionListener(logic);
		item_style3.addActionListener(logic);

		item_help.addActionListener(logic);
		item_about.addActionListener(logic);

		// 设置各个菜单项的快捷键
		item_newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
				KeyEvent.CTRL_MASK));
		item_openFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
				KeyEvent.CTRL_MASK));
		item_saveFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
				KeyEvent.CTRL_MASK));

		item_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
				KeyEvent.CTRL_MASK));
		item_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
				KeyEvent.CTRL_MASK));
		item_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
				KeyEvent.CTRL_MASK));
		item_delete.setAccelerator(KeyStroke.getKeyStroke("DELETE"));

		item_find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
				KeyEvent.CTRL_MASK));
		item_findNext.setAccelerator(KeyStroke.getKeyStroke("F3"));
		item_replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
				KeyEvent.CTRL_MASK));
		// 替换快捷键应该是ctrl+h,可是这个是JTextArea的默认快捷键是删除前一个字符,所以只能换一个了
		item_selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
				KeyEvent.CTRL_MASK));
		item_insertNowTime.setAccelerator(KeyStroke.getKeyStroke("F5"));

		// 把各个菜单项添加到相应的菜单中
		file_menu.add(item_newFile);
		file_menu.add(item_openFile);
		file_menu.add(item_saveFile);
		file_menu.add(item_saveAsFile);
		file_menu.addSeparator();
		file_menu.add(item_Exit);

		edit_menu.add(item_cut);
		edit_menu.add(item_copy);
		edit_menu.add(item_paste);
		edit_menu.add(item_delete);
		edit_menu.addSeparator();
		edit_menu.add(item_find);
		edit_menu.add(item_findNext);
		edit_menu.add(item_replace);
		edit_menu.addSeparator();
		edit_menu.add(item_selectAll);
		edit_menu.add(item_insertNowTime);

		format_menu.add(item_setLineWrap);
		format_menu.add(item_setWrapStyleWord);
		format_menu.add(item_setFont);

		view_menu.add(item_tool);
		view_menu.add(style_menu);
		style_group.add(item_style1);
		style_group.add(item_style2);
		style_group.add(item_style3);
		style_menu.add(item_style1);
		style_menu.add(item_style2);
		style_menu.add(item_style3);

		help_menu.add(item_help);
		help_menu.add(item_about);
		this.add(file_menu);
		this.add(edit_menu);
		this.add(format_menu);
		this.add(view_menu);
		this.add(help_menu);
	}
	/**返回菜单条:自动换行的状态*/
	public boolean item_setLineWrap_isSelected()
	{
		return item_setLineWrap.isSelected();
	}
	/**返回菜单条:自单词为界的状态*/
	public boolean item_setWrapStyleWord_isSelected()
	{
		return item_setWrapStyleWord.isSelected();
	}
	/**返回菜单条:工具条的状态*/
	public boolean item_tool_isSelected()
	{
		return item_tool.isSelected();
	}
}

⌨️ 快捷键说明

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