毕业设计(论文)-JAVA记事本源代码.doc_第1页
毕业设计(论文)-JAVA记事本源代码.doc_第2页
毕业设计(论文)-JAVA记事本源代码.doc_第3页
毕业设计(论文)-JAVA记事本源代码.doc_第4页
毕业设计(论文)-JAVA记事本源代码.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/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, helpButton;/ 文本编辑区域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 hour = time.get(Calendar.HOUR_OF_DAY);int min = 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_ALWAYS);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/ 显示弹出菜单。else statusLabel3.setText(当前光标所在行数: + getlineNumber();checkMenuItemEnabled(); / 设置剪切、复制、粘贴、删除等功能的可用性Text.requestFocus(); / 编辑区获取焦点);/ -创建工具栏JPanel toolBar = new JPanel();toolBar.setLayout(new FlowLayout(FlowLayout.LEFT);Icon newIcon = new ImageIcon(Icons/new.gif);Icon openIcon = new ImageIcon(Icons/open.gif);Icon saveIcon = new ImageIcon(Icons/save.gif);Icon saveAsIcon = new ImageIcon(Icons/saveas.gif);Icon printIcon = new ImageIcon(Icons/print.gif);Icon undoIcon = new ImageIcon(Icons/undo.gif);Icon cutIcon = new ImageIcon(Icons/cut.gif);Icon copyIcon = new ImageIcon(Icons/copy.gif);Icon pasteIcon = new ImageIcon(Icons/paste.gif);Icon deleteIcon = new ImageIcon(Icons/delete.gif);Icon searchIcon = new ImageIcon(Icons/search.gif);Icon timeIcon = new ImageIcon(Icons/time.gif);Icon fontIcon = new ImageIcon(Icons/font.gif);Icon boldIcon = new ImageIcon(Icons/bold.gif);Icon italicIcon = new ImageIcon(Icons/italic.gif);Icon bgcolorIcon = new ImageIcon(Icons/bgcolor.gif);Icon fgcolorIcon = new ImageIcon(Icons/fgcolor.gif);Icon helpIcon = new ImageIcon(Icons/help.gif);newButton = new JButton(newIcon);openButton = new JButton(openIcon);saveButton = new JButton(saveIcon);saveAsButton = new JButton(saveAsIcon);printButton = new JButton(printIcon);undoButton = new JButton(undoIcon);undoButton.setEnabled(false);cutButton = new JButton(cutIcon);cutButton.setEnabled(false);copyButton = new JButton(copyIcon);copyButton.setEnabled(false);pasteButton = new JButton(pasteIcon);pasteButton.setEnabled(false);deleteButton = new JButton(deleteIcon);deleteButton.setEnabled(false);searchButton = new JButton(searchIcon);timeButton = new JButton(timeIcon);fontButton = new JButton(fontIcon);boldButton = new JButton(boldIcon);italicButton = new JButton(italicIcon);fgcolorButton = new JButton(fgcolorIcon);bgcolorButton = new JButton(bgcolorIcon);helpButton = new JButton(helpIcon);newButton.setPreferredSize(new Dimension(22, 22);openButton.setPreferredSize(new Dimension(22, 22);saveButton.setPreferredSize(new Dimension(22, 22);saveAsButton.setPreferredSize(new Dimension(22, 22);printButton.setPreferredSize(new Dimension(22, 22);undoButton.setPreferredSize(new Dimension(22, 22);cutButton.setPreferredSize(new Dimension(22, 22);copyButton.setPreferredSize(new Dimension(22, 22);pasteButton.setPreferredSize(new Dimension(22, 22);deleteButton.setPreferredSize(new Dimension(22, 22);searchButton.setPreferredSize(new Dimension(22, 22);timeButton.setPreferredSize(new Dimension(22, 22);fontButton.setPreferredSize(new Dimension(22, 22);boldButton.setPreferredSize(new Dimension(22, 22);italicButton.setPreferredSize(new Dimension(22, 22);fgcolorButton.setPreferredSize(new Dimension(22, 22);bgcolorButton.setPreferredSize(new Dimension(22, 22);helpButton.setPreferredSize(new Dimension(22, 22);/ -注册工具栏按钮事件newButton.addActionListener(this);openButton.addActionListener(this);saveButton.addActionListener(this);saveAsButton.addActionListener(this);printButton.addActionListener(this);undoButton.addActionListener(this);cutButton.addActionListener(this);copyButton.addActionListener(this);pasteButton.addActionListener(this);deleteButton.addActionListener(this);searchButton.addActionListener(this);timeButton.addActionListener(this);fontButton.addActionListener(this);boldButton.addActionListener(this);italicButton.addActionListener(this);fgcolorButton.addActionListener(this);bgcolorButton.addActionListener(this);helpButton.addActionListener(this);/ -设置按钮提示文字newButton.setToolTipText(新建);openButton.setToolTipText(打开);saveButton.setToolTipText(保存);saveAsButton.setToolTipText(另存为);printButton.setToolTipText(打印);undoButton.setToolTipText(撤消);cutButton.setToolTipText(剪切);copyButton.setToolTipText(复制);pasteButton.setToolTipText(粘贴);deleteButton.setToolTipText(删除所选);searchButton.setToolTipText(查找与替换);timeButton.setToolTipText(插入时间/日期);fontButton.setToolTipText(设置字体);boldButton.setToolTipText(粗体);italicButton.setToolTipText(斜体);fgcolorButton.setToolTipText(设置字体颜色);bgcolorButton.setToolTipText(设置背景颜色);helpButton.setToolTipText(帮助);/ 设置撤消、重做、剪切、复制、粘贴、删除等工具栏按钮不可用时的图片(灰色)undoButton.setDisabledIcon(new ImageIcon(Icons/undo1.gif);cutButton.setDisabledIcon(new ImageIcon(Icons/cut1.gif);copyButton.setDisabledIcon(new ImageIcon(Icons/copy1.gif);pasteButton.setDisabledIcon(new ImageIcon(Icons/paste1.gif);deleteButton.setDisabledIcon(new ImageIcon(Icons/delete1.gif);/ -向工具栏添加按钮toolBar.add(newButton);toolBar.add(openButton);toolBar.add(saveButton);toolBar.add(saveAsButton);toolBar.add(printButton);toolBar.add(undoButton);toolBar.add(cutButton);toolBar.add(copyButton);toolBar.add(pasteButton);toolBar.add(deleteButton);toolBar.add(searchButton);toolBar.add(timeButton);toolBar.add(fontButton);toolBar.add(boldButton);toolBar.add(italicButton);toolBar.add(fgcolorButton);toolBar.add(bgcolorButton);toolBar.add(helpButton);/ -向容器添加工具栏container.add(toolBar, BorderLayout.NORTH);/ -创建和添加状态栏statusBar = new JToolBar();statusBar.setLayout(new FlowLayout(FlowLayout.LEFT);statusLabel1 = new JLabel(按F1获取帮助 );statusLabel2 = new JLabel( 当前时间: + hour + : + min + : + second);statusLabel3 = new JLabel( 当前光标所在行数 + getlineNumber();statusBar.add(statusLabel1);statusBar.addSeparator();statusBar.add(statusLabel2);statusBar.addSeparator();statusBar.add(statusLabel3);container.add(statusBar, BorderLayout.SOUTH);statusBar.setVisible(true);/ -改变标题栏窗口左侧默认图标Toolkit tk = Toolkit.getDefaultToolkit();Image image = tk.createImage(Icons/notepad.gif);this.setIconImage(image);this.setJMenuBar(MenuBar); / 向窗口添加菜单条container.add(scroll, BorderLayout.CENTER); / 向容器添加文本编辑区this.pack();this.setSize(800, 800);this.setVisible(true);checkMenuItemEnabled();Text.requestFocus();/this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent evt) checkText(););Clock clock = new Clock();clock.start();public void checkText() Text.requestFocus();String currentValue = Text.getText();boolean isTextChange = (currentValue.equals(oldValue) ? false : true;if (isTextChange) int saveChoose = JOptionPane.showConfirmDialog(this, 您的文件尚未保存。是否保存?, 提示, JOptionPane.YES_NO_CANCEL_OPTION);if (saveChoose = JOptionPane.YES_OPTION) JFileChooser fileChooser = new JFileChooser();fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);fileChooser.setApproveButtonText(确定);fileChooser.setDialogTitle(另存为);int result = fileChooser.showSaveDialog(this);if (result = JFileChooser.CANCEL_OPTION) statusLabel1.setText(您没有选择任何文件);return;saveFileName = fileChooser.getSelectedFile();if (saveFileName = null | saveFileName.getName().equals()JOptionPane.showMessageDialog(this, 不合法的文件名, 不合法的文件名, JOptionPane.ERROR_MESSAGE);else saveFile();Text.setText();this.setTitle(新建文本);statusLabel1.setText(新建文本);else if (saveChoose = JOptionPane.NO_OPTION) System.exit(0);else if (saveChoose = JOptionPane.CANCEL_OPTION) Text.requestFocus();else if (!isTextChange) System.exit(0);public void checkMenuItemEnabled() String selectText = Text.getSelectedText();if (selectText = null) mEdit_Cut.setEnabled(false);popupMenu_Cut.setEnabled(false);cutButton.setEnabled(false);mEdit_Copy.setEnabled(false);popupMenu_Copy.setEnabled(false);copyButton.setEnabled(false);mEdit_Del.setEnabled(false);popupMenu_Delete.setEnabled(false);deleteButton.setEnabled(false); else m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论