📄 mymenubar.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 + -