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

📄 main.java

📁 本程序不仅实现了记事本基本的功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package jnotepad;import java.awt.*;import java.awt.event.*;import java.io.*;import java.text.DateFormat;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.*;import java.util.*;import javax.swing.undo.UndoManager;class JNotepad extends JFrame implements ActionListener, ItemListener, Runnable {    JNotepad() {        super("记事本   Time@");        this.setLayout(new BorderLayout());//null        text.setLineWrap(true);//自动换行        text.setBackground(new Color(200, 255, 200));        text.getDocument().addUndoableEditListener(Un_Re);        this.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                try {                    exit();                } catch (IOException ex) {                    Logger.getLogger(JNotepad.class.getName()).log(Level.SEVERE, null, ex);                }            }        });        menubar = new JMenuBar();        menu = new JMenu("文件(F)");        this.setJMenuBar(menubar);//Why not  this.add(menubar);        menubar.add(menu);        newfile = new JMenuItem("新建(N)");        newfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK, false));        menu.add(newfile);        newfile.addActionListener(this);        openfile = new JMenuItem("打开(O)...");        openfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK, false));        menu.add(openfile);        openfile.addActionListener(this);        savefile = new JMenuItem("保存(S)");        savefile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK, false));        menu.add(savefile);        savefile.addActionListener(this);        saveas = new JMenuItem("另存为(A)...");        menu.add(saveas);        saveas.addActionListener(this);        menu.addSeparator();        recentfiles = new JMenu("最近打开的文件(RF)");        menu.add(recentfiles);        recentfiles.addActionListener(this);        menu.addSeparator();        exit = new JMenuItem("退出(X)");        menu.add(exit);        exit.addActionListener(this);        edit = new JMenu("编辑(E)");        menubar.add(edit);        undoItem = new JMenuItem("撤销(U)");        undoItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK, false));        edit.add(undoItem);        undoItem.addActionListener(this);        redoItem = new JMenuItem("重做(R)");        redoItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, KeyEvent.CTRL_MASK, false));        edit.add(redoItem);        redoItem.addActionListener(this);        redoItem.setEnabled(false);        edit.addSeparator();        cutItem = new JMenuItem("剪切(T)");        cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK, false));        edit.add(cutItem);        cutItem.addActionListener(this);        copyItem = new JMenuItem("复制(C)");        copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK, false));        edit.add(copyItem);        copyItem.addActionListener(this);        pasteItem = new JMenuItem("粘贴(P)");        pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK, false));        edit.add(pasteItem);        pasteItem.addActionListener(this);        deleteItem = new JMenuItem("删除(L)");        deleteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, KeyEvent.CTRL_MASK, true));        edit.add(deleteItem);        deleteItem.addActionListener(this);        edit.addSeparator();        find = new JMenuItem("查找(F)");        find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK, false));        edit.add(find);        find.addActionListener(this);        replace = new JMenuItem("替换(R)");        replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, KeyEvent.CTRL_MASK, false));        edit.add(replace);        replace.addActionListener(this);        edit.addSeparator();        selectall = new JMenuItem("全选(A)");        selectall.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK, false));        edit.add(selectall);        selectall.addActionListener(this);        time_date = new JMenuItem("时间/日期(D)");        edit.add(time_date);        time_date.addActionListener(this);        style = new JMenu("设置(S)");        menubar.add(style);        enter = new JCheckBoxMenuItem("自动换行(W)");        enter.setState(true);        style.add(enter);        enter.addItemListener(this);        font = new JMenuItem("字体格式(F)...");        font.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK, false));        style.add(font);        font.addActionListener(this);        style.addSeparator();        musicpanel.setLayout(new BorderLayout());        music = new JMusic(musicpanel);        bkmusic = new JMenu("背景音乐(M)");        style.add(bkmusic);        bkmusic.add(musicImport);        musicImport.addActionListener(this);        bkmusic.add(musicmode);        for (int i = 0; i < 3; i++) {            mode[i] = new JRadioButtonMenuItem(modeValues[i]);            group.add(mode[i]);            musicmode.add(mode[i]);            mode[i].addActionListener(this);        }        mode[0].setSelected(true);        bkmusic.add(musiclist);        int size = music.VdirName.size();        for (int i = 0; i < size; i++) {            File file = new File((String) music.VdirName.get(i));            addMusicfile(file);        }        bkcolor = new JMenuItem("背景颜色(B)");        bkcolor.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_MASK, false));        style.add(bkcolor);        bkcolor.addActionListener(this);        style.addSeparator();        drag = new JCheckBoxMenuItem("支持拖拽文件(D)");        style.add(drag);        drag.setState(true);        drag.addItemListener(this);        view = new JMenu("查看(V)");        menubar.add(view);        tool = new JCheckBoxMenuItem("工具栏");        view.add(tool);        tool.setState(false);        tool.addItemListener(this);        about = new JMenu("关于(A)");        menubar.add(about);        info = new JMenuItem("关于记事本");        info.addActionListener(this);        about.add(info);        popmenu.add(popundoItem);        popundoItem.addActionListener(this);        popmenu.add(popredoItem);        popredoItem.addActionListener(this);        popmenu.addSeparator();        popmenu.add(popcutItem);        popcutItem.addActionListener(this);        popmenu.add(popcopyItem);        popcopyItem.addActionListener(this);        popmenu.add(poppasteItem);        poppasteItem.addActionListener(this);        popmenu.add(popdeleteItem);        popdeleteItem.addActionListener(this);        popmenu.addSeparator();        popmenu.add(popselectall);        popselectall.addActionListener(this);        text.addMouseListener(new MouseAdapter() {            @Override            public void mouseReleased(MouseEvent e) {                if (e.isPopupTrigger()) {                    popmenu.show(text, e.getX(), e.getY());                }            }        });        this.setSize(750, 650);        //设定窗体出现在屏幕的正中        //获取屏幕的大小先...        Dimension scrnDim = Toolkit.getDefaultToolkit().getScreenSize();        //计算本窗体的起始位置        int x = (scrnDim.width - this.getSize().width) / 2;        int y = (scrnDim.height - this.getSize().height) / 2;        this.setLocation(x, y);        this.add(musicpanel, BorderLayout.SOUTH);        this.add(scroll, BorderLayout.CENTER);        this.thread.start();        this.setVisible(true);    }    public int decide() throws IOException {        newContent = text.getText();        if (!oldContent.equals(newContent)) {            int decision = JOptionPane.showConfirmDialog(this,                    currentFile.getPath() + "文件的内容已经改变!\n" + "想保存文件吗?",                    "记事本",                    JOptionPane.YES_NO_CANCEL_OPTION,                    JOptionPane.WARNING_MESSAGE);            return decision;        }        return JOptionPane.NO_OPTION;    }    public void newFile() throws IOException {        int decision = decide();        if (decision == JOptionPane.YES_OPTION) {            if (check()) {                saveFile();            } else {                saveAs();            }        } else if (decision == JOptionPane.CANCEL_OPTION) {            return;        }        this.setTitle("无标题-记事本   Time@");        text.setText("");        oldContent = newContent = "";    }    public void openFile() throws IOException {        int decision = decide();        if (decision == JOptionPane.YES_OPTION) {            if (check()) {                saveFile();            } else {                saveAs();            }        } else if (decision == JOptionPane.CANCEL_OPTION) {            return;        }        JFileChooser openDialog = new JFileChooser();        openDialog.setCurrentDirectory(currentFile);        openDialog.setFileFilter(new javax.swing.filechooser.FileFilter() {            public boolean accept(File f) {                return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();            }            public String getDescription() {                return "文本文档(*.txt)";            }        });        int Y_N = openDialog.showOpenDialog(this);        if (Y_N == JFileChooser.CANCEL_OPTION) {            return;        }        File file = openDialog.getSelectedFile();        if (file == null) {            return;        }        text.setText("");        currentFile = file;        title = currentFile.getName();        this.setTitle(title + "-记事本   Time@");        try {            BufferedReader read = new BufferedReader(new FileReader(currentFile.getPath()));            String oneline = null;            oldContent = "";            do {                oneline = read.readLine();                if (oneline != null) {                    text.append(oneline + "\n");//text.append(oneline + "\n");                }            } while (oneline != null);            text.setSelectionEnd(0);            oldContent = text.getText();            text.setSelectionStart(0);            text.setSelectionEnd(0);            read.close();        } catch (Exception ex) {        }        addRecentfiles(currentFile.getPath());    }    public void saveFile() throws IOException {        try {            BufferedWriter writer = new BufferedWriter(new FileWriter(currentFile.getPath()));            String content = "";            content = text.getText();            writer.write(content);            writer.flush();            writer.close();            oldContent = newContent = text.getText();        } catch (Exception e2) {        }    }    public void saveAs() throws IOException {        try {            JFileChooser saveAs = new JFileChooser();            saveAs.setCurrentDirectory(currentFile);            saveAs.setSelectedFile(currentFile);            saveAs.setFileFilter(new javax.swing.filechooser.FileFilter() {                public boolean accept(File f) {                    return f.getName().toLowerCase().endsWith(".txt") || f.isDirectory();                }                public String getDescription() {                    return "文本文档(*.txt)";                }            });            int Y_N = saveAs.showSaveDialog(this);            if (Y_N == JFileChooser.CANCEL_OPTION) {                return;            }            File file = new File("");            file = saveAs.getSelectedFile();            BufferedWriter writer = new BufferedWriter(new FileWriter(file.getPath()));            String content = "";            do {                content = text.getText();                writer.write(content);                writer.close();            } while (content != null);        } catch (Exception e2) {        }    }    public void exit() throws IOException {        newContent = text.getText();        if (!oldContent.equals(newContent)) {            int decision = JOptionPane.showConfirmDialog(this,                    currentFile.getPath() + "文件的内容已经改变!\n" + "想保存文件吗?",                    "记事本",                    JOptionPane.YES_NO_OPTION,                    JOptionPane.WARNING_MESSAGE);            if (decision == JOptionPane.YES_OPTION) {                saveAs();            }        }        thread.stop();        music.saveMusiclist();        System.exit(0);    }    private void cut() {        clipboard.setData(text.getSelectedText());        text.replaceRange("", text.getSelectionStart(), text.getSelectionEnd());

⌨️ 快捷键说明

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