以下文档格式全部为word格式,下载后您可以任意修改编辑。
JAVA记事本源代码import java.awt.*;import java.awt.event.*;import java.text.*;import java.util.*;import java.io.*;import javax.swing.undo.*;import javax.swing.*;import javax.swing.event.*;import java.awt.datatransfer.*;import java.util.List;public class Notepad4 extends JFrame implements ActionListener, DocumentListener {JMenu mFile, mEdit, mMode, mView, mHelp;---文件菜单JMenuItem mFile_New, mFile_Open, mFile_Save, mFile_ASave, mFile_Print, mFile_Exit;---编辑菜单JMenuItem mEdit_Undo, mEdit_Cut, mEdit_Copy, mEdit_Paste, mEdit_Del, mEdit_Search, mEdit_SearchNext, mEdit_Replace, mEdit_Turnto, mEdit_SelectAll, mEdit_TimeDate;---格式菜单JCheckBoxMenuItem formatMenu_LineWrap;JMenu formatMenu_Color;JMenuItem formatMenu_Font, formatMenu_Color_FgColor, formatMenu_Color_BgColor;---查看菜单JCheckBoxMenuItem viewMenu_Status;---帮助菜单JMenuItem mHelp_HelpTopics, mHelp_About;---弹出菜单级菜单项JPopupMenu popupMenu;JMenuItem popupMenu_Undo, popupMenu_Cut, popupMenu_Copy, popupMenu_Paste, popupMenu_Delete, popupMenu_SelectAll;---工具栏按钮JButton newButton, openButton, saveButton, saveAsButton, printButton, undoButton, redoButton, cutButton, copyButton, pasteButton, deleteButton, searchButton, timeButton, fontButton, boldButton,italicButton, fgcolorButton, bgcolorButton, ;文本编辑区域static JTextArea Text;状态栏标签JLabel statusLabel1, statusLabel2, statusLabel3;JToolBar statusBar;---系统剪贴板Toolkit toolKit = Toolkit.getDefaultToolkit();Clipboard clipBoard = toolKit.getSystemClipboard();---创建撤消操作管理器protected UndoManager undo = new UndoManager();protected UndoableEditListener undoHandler = new UndoHandler();----其它变量boolean isNewFile = true; 是否新文件(未保存过的)File currentFile; 当前文件名String oldValue; 存放编辑区原来的内容,用于比较文本是否有改动JButton fontOkButton; 字体设置里的"确定"按钮----设置编辑区默认字体protected Font defaultFont = new Font("宋体", Font.PLAIN, 12); GregorianCalendar time = new GregorianCalendar();int = time.get(Calendar.MINUTE);int second = time.get(Calendar.SECOND);File saveFileName = null, fileName = null;public Notepad4() {super("VXBB的记事本");setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);Container container = getContentPane();System.out.println(Text.getDragEnabled()); 支持自动拖放JScrollPane scroll = new JScrollPane(Text);scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALW AYS);scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS) ;Text.setWrapStyleWord(true); 设置单词在一行不足容纳时换行Text.setLineWrap(true);Text.setFont(defaultFont); 设置编辑区默认字体Text.setBackground(Color.white); 设置编辑区默认背景色Text.setForeground(Color.black); 设置编辑区默认前景色oldValue = Text.getText(); 获取原文本编辑区的内容--编辑区注册事件监听Text.getDocument().addUndoableEditListener(undoHandler); 添加负责通知任何更改的撤消侦听器Text.getDocument().addDocumentListener(this); 添加负责通知任何更改的文档侦听器JMenuBar MenuBar = new JMenuBar();mFile = new JMenu("文件(F)", true); 创建菜单mEdit = new JMenu("编辑(E)", true);mMode = new JMenu("格式(O)", true);mView = new JMenu("查看(V)", true);mHelp = new JMenu("帮助(H)", true);mEdit.addActionListener(new ActionListener() 注册事件监听{public void actionPerformed(ActionEvent e) {checkMenuItemEnabled(); 设置剪切、复制、粘贴、删除等功能的可用性}});mFile.setMnemonic('F');mEdit.setMnemonic('E');mMode.setMnemonic('O');mView.setMnemonic('V');mHelp.setMnemonic('H');MenuBar.add(mFile);MenuBar.add(mEdit);MenuBar.add(mMode);MenuBar.add(mView);MenuBar.add(mHelp);--文件菜单mFile_New = new JMenuItem("新建(N)", 'N');mFile_Open = new JMenuItem("打开(O)", 'O');mFile_Save = new JMenuItem("保存(S)", 'S');mFile_ASave = new JMenuItem("另存为(A)", 'A');mFile_Print = new JMenuItem("打印(P)", 'P');mFile_Exit = new JMenuItem("退出(X)", 'X');mFile_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));mFile_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));mFile_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));mFile_Print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK));mFile_New.addActionListener(this); 注册事件监听mFile_Open.addActionListener(this);mFile_Save.addActionListener(this);mFile_ASave.addActionListener(this);mFile_Print.addActionListener(this);mFile_Exit.addActionListener(this);mFile.add(mFile_New); 添加菜单项mFile.add(mFile_Open);mFile.add(mFile_Save);mFile.add(mFile_ASave);mFile.addSeparator(); 添加分割线mFile.add(mFile_Print);mFile.addSeparator(); 添加分割线mFile.add(mFile_Exit);--编辑菜单mEdit_Undo = new JMenuItem("撤消(U)", 'U');mEdit_Cut = new JMenuItem("剪切(T)", 'T');mEdit_Copy = new JMenuItem("复制(C)", 'C');mEdit_Paste = new JMenuItem("粘贴(P)", 'P');mEdit_Del = new JMenuItem("删除(L)", 'L');mEdit_Search = new JMenuItem("查找(F)", 'F');mEdit_SearchNext = new JMenuItem("查找下一个(N)", 'N'); mEdit_Replace = new JMenuItem("替换(R)", 'R');mEdit_Turnto = new JMenuItem("转到(G)", 'G');mEdit_SelectAll = new JMenuItem("全选(A)", 'A');mEdit_TimeDate = new JMenuItem("时间日期(D)", 'D'); mEdit_Cut.setEnabled(false);mEdit_Undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));mEdit_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));mEdit_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));mEdit_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));mEdit_Del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); mEdit_Search.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));mEdit_SearchNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0));mEdit_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));mEdit_Turnto.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.CTRL_MASK));mEdit_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));mEdit_TimeDate.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0)); mEdit_Undo.addActionListener(this); 注册事件监听mEdit_Cut.addActionListener(this);mEdit_Copy.addActionListener(this);mEdit_Paste.addActionListener(this);mEdit_Del.addActionListener(this);mEdit_Search.addActionListener(this);mEdit_SearchNext.addActionListener(this);mEdit_Replace.addActionListener(this);mEdit_Turnto.addActionListener(this);mEdit_SelectAll.addActionListener(this);mEdit_TimeDate.addActionListener(this);mEdit.add(mEdit_Undo); 添加菜单项mEdit.addSeparator(); 添加分割线mEdit.add(mEdit_Cut);mEdit.add(mEdit_Copy);mEdit.add(mEdit_Paste);mEdit.add(mEdit_Del);mEdit.addSeparator();mEdit.add(mEdit_Search);mEdit.add(mEdit_SearchNext);mEdit.add(mEdit_Replace);mEdit.add(mEdit_Turnto);mEdit.addSeparator();mEdit.add(mEdit_SelectAll);mEdit.add(mEdit_TimeDate);--格式菜单formatMenu_LineWrap = new JCheckBoxMenuItem("自动换行(W)"); formatMenu_LineWrap.setMnemonic('W');formatMenu_LineWrap.setState(true);formatMenu_Font = new JMenuItem("字体(F)", 'F');formatMenu_Color = new JMenu("颜色");formatMenu_Color_FgColor = new JMenuItem("字体颜色"); formatMenu_Color_BgColor = new JMenuItem("背景颜色"); formatMenu_LineWrap.addActionListener(this); 注册事件监听formatMenu_Font.addActionListener(this);formatMenu_Color_FgColor.addActionListener(this); formatMenu_Color_BgColor.addActionListener(this); mMode.add(formatMenu_LineWrap); 添加菜单项mMode.addSeparator();mMode.add(formatMenu_Font);mMode.add(formatMenu_Color);formatMenu_Color.add(formatMenu_Color_FgColor); formatMenu_Color.add(formatMenu_Color_BgColor);--查看菜单viewMenu_Status = new JCheckBoxMenuItem("状态栏(S)"); viewMenu_Status.setMnemonic('S');viewMenu_Status.setState(true);viewMenu_Status.addActionListener(this);mView.add(viewMenu_Status);--帮助菜单mHelp_HelpTopics = new JMenuItem("帮助(H)", 'H');mHelp_About = new JMenuItem("关于(A)", 'A');mHelp_HelpTopics.addActionListener(this);mHelp_About.addActionListener(this);mHelp.add(mHelp_HelpTopics);mHelp.addSeparator(); 添加分割线mHelp.add(mHelp_About);创建右键弹出菜单popupMenu = new JPopupMenu();popupMenu_Undo = new JMenuItem("撤消(U)", 'U'); popupMenu_Cut = new JMenuItem("剪切(T)", 'T'); popupMenu_Copy = new JMenuItem("复制(C)", 'C'); popupMenu_Paste = new JMenuItem("粘贴(P)", 'P'); popupMenu_Delete = new JMenuItem("删除(D)", 'D'); popupMenu_SelectAll = new JMenuItem("全选(A)", 'A'); popupMenu_Undo.setEnabled(false); 撤消选项初始设为不可用 ---向右键菜单添加菜单项和分隔符popupMenu.add(popupMenu_Undo);popupMenu.addSeparator();popupMenu.add(popupMenu_Cut);popupMenu.add(popupMenu_Copy);popupMenu.add(popupMenu_Paste);popupMenu.add(popupMenu_Delete);popupMenu.addSeparator();popupMenu.add(popupMenu_SelectAll);右键菜单注册事件popupMenu_Undo.addActionListener(this);popupMenu_Cut.addActionListener(this);popupMenu_Copy.addActionListener(this);popupMenu_Paste.addActionListener(this);popupMenu_Delete.addActionListener(this);popupMenu_SelectAll.addActionListener(this);文本编辑区注册右键菜单事件Text.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {checkForTriggerEvent(e);}public void mouseReleased(MouseEvent e) {checkForTriggerEvent(e);}private void checkForTriggerEvent(MouseEvent e) {if (e.isPopupTrigger())popupMenu.show(e.getComponent(), e.getX(), e.getY()); 在组件调用者的坐标空间中的位置X、Y显示弹出菜单。