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

📄 mynotepad.java

📁 Java记事本,类似于Windows附带的记事本
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/** * * @author lidawen */import java.awt.*;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.*;import java.awt.print.PrinterException;import java.io.*;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Locale;import javax.swing.event.*;import javax.swing.undo.*;import javax.swing.*;import javax.swing.filechooser.FileFilter;//import setfont.SetFont;class DaveNotepad extends JFrame implements ActionListener, DocumentListener,        MouseListener, Transferable {    /**本程序实现一个记事本编辑器,所有的功能都和XP系统自带的记事本基本一样,多出了工具栏等一些东西     *     */    private static final long serialVersionUID = 3056169543548771920L;    /*##########################以下为变量的定义###############################*/    File file = null;//当前文件    boolean isNewfile = true;//指示是否为新文件    String oldValue; //存放编辑区原来的内容,用于比较文本是否有改动    JFileChooser filechooser = new JFileChooser(); //文件选择框    JMenuBar mb = new JMenuBar(); //菜单条    JMenu mf, me, mo, mh;//菜单文件、编辑、格式、帮助    JMenuItem mi1, mi2, mi3, mi4, mi5, mi6, mi7; //文件菜单项    JMenuItem me1, me12, me2, me3, me4, me5, me6, me7, me8, me9, me10, me11;//编辑菜单项    JMenuItem mo1, mo2; //格式菜单项    JMenuItem mh1, mh2;//帮助菜单项    JToolBar tbar = new JToolBar();//工具条    JButton bt_save, bt_new, bt_open, bt_cut, bt_copy, bt_paste, bt_undo,            bt_redo, bt_bold, bt_underline, bt_italic; //工具条上的按钮    JLabel fontlabel;//工具条上的字体标签    JLabel sizelabel;//工具条上的字号标签    JLabel statusLabel;//状态栏标签    JPopupMenu popupMenu;//右键菜单    JMenuItem popupMenu_Undo, popupMenu_Redo, popupMenu_Cut, popupMenu_Copy,            popupMenu_Paste, popupMenu_Delete, popupMenu_SelectAll;    UndoManager undo = new UndoManager(); // 撤消管理器    Font defaultFont = new Font("宋体", Font.PLAIN, 15);//默认字体    String fontname; //用于工具栏中文字的字体设置选项,获取用户选择的字体型    int fontsize; //用于工具栏中文字的字号设置选项,获取用户选择的字号大小    JTextArea tex = new JTextArea(); //文本域//创建系统剪贴板    Toolkit toolKit = Toolkit.getDefaultToolkit();    Clipboard clipBoard = toolKit.getSystemClipboard();    public JButton fontOkButton; //字体设置里的"确定"按钮    /*################构造方法##############################*/    public DaveNotepad() {        super("Dave's Notepad");        tex.setFont(defaultFont);//设置编辑区默认的字体        //$$$$$$$$$$$$$$以下为菜单的建立$$$$$$$$$$$$$$$$$        mb.setOpaque(false); //设置透明        mb.setBorderPainted(true);//设置边框的可见性        mf = new JMenu("文件(F)", true); //文件菜单        mf.setMnemonic(KeyEvent.VK_F); //设置快捷键按下ALT+F打开本菜单        mi1 = new JMenuItem("新建(N)"); //“新建”菜单项        mi1.setMnemonic('N'); //设置激活键为N        mi1.addActionListener(this); //添加监听器        mi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,                InputEvent.CTRL_MASK));//设置快捷键CTRL+N激活本项        mf.add(mi1); //添加到菜单        //以下为上面同样的重复        mi2 = new JMenuItem("打开(O)...");        mi2.addActionListener(this);        mi2.setMnemonic('O');        mi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,                InputEvent.CTRL_MASK));        mf.add(mi2);        mi3 = new JMenuItem("保存(S)");        mi3.addActionListener(this);        mi3.setMnemonic('S');        mi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,                InputEvent.CTRL_MASK));        mf.add(mi3);        mi4 = new JMenuItem("另存为(A)...");        mi4.addActionListener(this);        mi4.setMnemonic('A');        mf.add(mi4);        mf.addSeparator(); //添加分隔线           mi5 = new JMenuItem("页面设置(U)...");        mi5.addActionListener(this);        mi5.setMnemonic('U');        mi5.setEnabled(false);//本功能暂无        mf.add(mi5);        mi6 = new JMenuItem("打印(P)...");        mi6.addActionListener(this);        mi6.setMnemonic('P');        mi6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,                InputEvent.CTRL_MASK));        mf.add(mi6);        mf.addSeparator(); //添加分割线        mi7 = new JMenuItem("退出(X)");        mi7.setMnemonic('X');        mi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,                InputEvent.CTRL_MASK));        mi7.addActionListener(this);        mf.add(mi7);        mb.add(mf);        //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$文件菜单建立完毕$$$$$$$$$$$$$$$$$$$$$$$$$$$$$        //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$以下为编辑菜单$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$        me = new JMenu("编辑(E)"); //编辑菜单        me.setMnemonic(KeyEvent.VK_E);        me1 = new JMenuItem("撤消(Z)");        me1.addActionListener(this);        me1.setMnemonic('Z');        me1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,                InputEvent.CTRL_MASK));        me.add(me1);        me12 = new JMenuItem("恢复撤销(B)");        me12.addActionListener(this);        me12.setMnemonic('B');        me12.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,                InputEvent.CTRL_MASK));        me.add(me12);        me.addSeparator();        me2 = new JMenuItem("剪切(T)");        me2.addActionListener(this);        me2.setMnemonic('T');        me2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,                InputEvent.CTRL_MASK));        me.add(me2);        me3 = new JMenuItem("复制(C)");        me3.addActionListener(this);        me3.setMnemonic('C');        me3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,                InputEvent.CTRL_MASK));        me.add(me3);        me4 = new JMenuItem("粘贴(P)");        me4.addActionListener(this);        me4.setMnemonic('P');        me4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,                InputEvent.CTRL_MASK));        me.add(me4);        me5 = new JMenuItem("删除(L)");        me5.addActionListener(this);        me5.setMnemonic('L');        me5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,                InputEvent.CTRL_MASK));        me.add(me5);        me.addSeparator();        me6 = new JMenuItem("查找(F)...");        me6.addActionListener(this);        me6.setMnemonic('F');        me6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,                InputEvent.CTRL_MASK));        me.add(me6);        me7 = new JMenuItem("查找下一个(N)");        me7.addActionListener(this);        me7.setMnemonic('N');        me7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,                InputEvent.CTRL_MASK));        me.add(me7);        me8 = new JMenuItem("替换(R)...");        me8.addActionListener(this);        me8.setMnemonic('R');        me8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,                InputEvent.CTRL_MASK));        me.add(me8);        me9 = new JMenuItem("转到(G)...");        me9.addActionListener(this);        me9.setMnemonic('G');        me9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,                InputEvent.CTRL_MASK));        me.add(me9);        me.addSeparator();        me10 = new JMenuItem("全选(A)");        me10.addActionListener(this);        me10.setMnemonic('A');        me10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,                InputEvent.CTRL_MASK));        me.add(me10);        me11 = new JMenuItem("时间/日期(D)");        me11.addActionListener(this);        me11.setMnemonic('D');        me11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,                InputEvent.CTRL_MASK));        me.add(me11);        mb.add(me);        //$$$$$$$$$$$$$$$$$$$编辑菜单完毕$$$$$$$$$$$$$$$$$$$$$        //$$$$$$$$$$$$$$$$$$$一下为格式菜单$$$$$$$$$$$$$$$$$$$        mo = new JMenu("格式(O)"); //格式菜单        mo.setMnemonic(KeyEvent.VK_O);        mo1 = new JMenuItem("自动换行(W)");        mo1.addActionListener(this);        mo1.setMnemonic('W');        mo.add(mo1);        mo2 = new JMenuItem("字体(F)");        mo2.addActionListener(this);        mo2.setMnemonic('F');// mo2.setEnabled(false);        mo.add(mo2);        mb.add(mo);        //$$$$$$$$$$$$$$$格式菜单完毕$$$$$$$$$$$$$$$$$$$$$$        //$$$$$$$$$$$$$$以下为帮助菜单$$$$$$$$$$$$$$$$$$$$$        mh = new JMenu("帮助(H)"); //帮助菜单        mh.setMnemonic(KeyEvent.VK_H);        mh1 = new JMenuItem("帮助主题(H)");        mh1.addActionListener(this);        mh1.setMnemonic('H');        mh1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1,                InputEvent.CTRL_MASK));        mh.add(mh1);        mh2 = new JMenuItem("关于本记事本(A)");        mh2.addActionListener(this);        mh2.setMnemonic('A');        mh.add(mh2);        mb.add(mh);        //$$$$$$$$$$$$$帮助菜单完毕$$$$$$$$$$$$$$$$$$$$$$$$        //$$$$$$$$$$$$$$$$$$$以下为工具条的建立$$$$$$$$$$$$$        Icon new_icon = new ImageIcon("icons/new.gif"); //设置工具条上按钮的图标        Icon open_icon = new ImageIcon("icons/open.gif");        Icon save_icon = new ImageIcon("icons/save.gif");        Icon cut_icon = new ImageIcon("icons/cut.gif");        Icon copy_icon = new ImageIcon("icons/copy.gif");        Icon paste_icon = new ImageIcon("icons/paste.gif");        Icon undo_icon = new ImageIcon("icons/undo.gif");        Icon redo_icon = new ImageIcon("icons/redo.gif");        Icon bold_icon = new ImageIcon("icons/bold.gif");        Icon ltalic_icon = new ImageIcon("icons/italic.gif");        Icon underline_icon = new ImageIcon("icons/underline.gif");        tbar.setFloatable(true); //设置工具条为可浮动        FlowLayout flayout = new FlowLayout(FlowLayout.LEADING, 0, 0); //布局方式        tbar.setLayout(flayout);        flayout.setAlignOnBaseline(true);        bt_new = new JButton(new_icon); //新建文件        bt_open = new JButton(open_icon); //打开文件        bt_save = new JButton(save_icon); //保存文件        bt_undo = new JButton(undo_icon); //撤销        bt_redo = new JButton(redo_icon); //重做        bt_cut = new JButton(cut_icon); //剪切        bt_copy = new JButton(copy_icon); //复制        bt_paste = new JButton(paste_icon); //粘贴        bt_bold = new JButton(bold_icon); //粗体        bt_italic = new JButton(ltalic_icon); //斜体        bt_underline = new JButton(underline_icon); //下划线        bt_new.setToolTipText("新建文件");//设置提示文字        bt_new.addActionListener(this);        bt_open.setToolTipText("打开文件");        bt_open.addActionListener(this);        bt_save.setToolTipText("保存文件");        bt_save.addActionListener(this);        bt_undo.setToolTipText("撤销");        bt_undo.addActionListener(this);        bt_redo.setToolTipText("恢复撤销");        bt_redo.addActionListener(this);        bt_cut.setToolTipText("剪切");        bt_cut.addActionListener(this);        bt_copy.setToolTipText("复制");        bt_copy.addActionListener(this);        bt_paste.setToolTipText("粘贴");        bt_paste.addActionListener(this);        bt_bold.setToolTipText("粗体");        bt_bold.addActionListener(this);        bt_italic.setToolTipText("斜体");        bt_italic.addActionListener(this);        bt_underline.setToolTipText("下划线");        //       bt_underline.addActionListener(this);        tbar.add(bt_new);        tbar.add(bt_open);        tbar.add(bt_save);        tbar.addSeparator();        tbar.add(bt_undo);        tbar.add(bt_redo);        tbar.addSeparator();        tbar.add(bt_cut);        tbar.add(bt_copy);        tbar.add(bt_paste);        tbar.addSeparator();        tbar.add(bt_bold);        tbar.add(bt_italic);        tbar.add(bt_underline);        bt_underline.setEnabled(false);        fontlabel = new JLabel("字体");        tbar.addSeparator();        tbar.add(fontlabel);        //字体标签             String[] ComboStr1 = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();//获取本地的本地语言的字体        JComboBox typecombo = new JComboBox(ComboStr1);        typecombo.setActionCommand("Type");        typecombo.addActionListener(this);        typecombo.addItemListener(new ItemListener() {//添加监听器获取选择用户的字体类型            public void itemStateChanged(ItemEvent e) {                fontname = (String) e.getItem();            }        });        tbar.add(typecombo);        //字号标签                JLabel sizelabel = new JLabel("大小");        tbar.addSeparator();        tbar.add(sizelabel);        String[] ComboStr2 = {"8", "9", "10", "12", "14", "15", "16", "18",            "20", "21", "22", "24", "26", "28", "30", "36", "48", "54",            "72", "89"        };        JComboBox sizecombo = new JComboBox(ComboStr2);        sizecombo.setActionCommand("Size");        sizecombo.addActionListener(this);        sizecombo.addItemListener(new ItemListener() {//添加监听器获取选择用户的字号大小            public void itemStateChanged(ItemEvent e) {                fontsize = (new Integer((String) e.getItem()).intValue());            }        });        tbar.add(sizecombo);        //$$$$$$$$$$$$$$工具条完毕$$$$$$$$$$$$$$$$$$$$$$$$               //$$$$$$$$$$$$$$右键菜单$$$$$$$$$$$$$$$$$$$$$$$$$$        popupMenu = new JPopupMenu();//右键菜单        tex.add(popupMenu);        tex.addMouseListener(this);

⌨️ 快捷键说明

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