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

📄 wordpad.java

📁 一个简单的Java编写的写字板的源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package wordpad;

import java.awt.*;
import java.awt.Font;
import java.awt.event.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.EditorKit;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import javax.swing.JTextPane;
import javax.swing.text.StyledEditorKit;
import javax.swing.undo.UndoManager;
import java.io.*;
import java.util.*;
import java.lang.*;
import org.w3c.dom.Document;

public class WordPad extends JFrame implements ActionListener,DocumentListener,UndoableEditListener
{
    private StyledDocument sd = null;
    private SimpleAttributeSet sas = null;
    private UndoManager um = new UndoManager();
    private File File=null;
    private Font Font;
    private Color Color;
    private Fontt Fontt;
    private Find Find;
    private Replace Replace;
    private Boolean saved = false;
    private JMenuBar MenuBar = new JMenuBar();//菜单栏
    private JToolBar ToolBar = new JToolBar();//工具栏
    private JToolBar FormatBar = new JToolBar();//格式栏
    public static JTextPane TextArea = new JTextPane();//文本区
    private JScrollPane jsp=new JScrollPane(TextArea);//给文本区安上滚动条
    private JLabel StatusBar=new JLabel("要“帮助”,请按F1");//状态栏
    //菜单项
    private JMenu Menu_File=new JMenu("文件(F)");
    private JMenu Menu_Edit=new JMenu("编辑(E)");
    private JMenu Menu_View=new JMenu("查看(V)");
    private JMenu Menu_Insert=new JMenu("插入(I)");
    private JMenu Menu_Format=new JMenu("格式(O)");
    private JMenu Menu_Help=new JMenu("帮助(H)");
    //文件菜单项
    private JMenuItem File_New=new JMenuItem("新建(N)",'N');
    private JMenuItem File_Open=new JMenuItem("打开(O)",'O');
    private JMenuItem File_Save=new JMenuItem("保存(S)",'S');
    private JMenuItem File_SaveAs=new JMenuItem("另存为(A)",'A');
    private JMenuItem File_Exit = new JMenuItem("退出(E)",'E');
    //编辑菜单项
    private JMenuItem Edit_Undo=new JMenuItem("撤消(U)",'U');
    private JMenuItem Edit_Redo=new JMenuItem("恢复(R)",'R');
    private JMenuItem Edit_Copy=new JMenuItem("复制(C)",'C');
    private JMenuItem Edit_Cut=new JMenuItem("剪切(T)",'T');
    private JMenuItem Edit_Paste=new JMenuItem("粘贴(V)",'V');
    private JMenuItem Edit_Del=new JMenuItem("清除(A)",'A');
    private JMenuItem Edit_SelectAll=new JMenuItem("全选(L)",'L');
    private JMenuItem Edit_Find=new JMenuItem("查找(F)",'F');
    private JMenuItem Edit_Replace=new JMenuItem("替换(E)",'E');
    //查看菜单项
    private JCheckBoxMenuItem View_Tool = new JCheckBoxMenuItem("工具栏(T)");
    private JCheckBoxMenuItem View_Format = new JCheckBoxMenuItem("格式栏(O)");
    private JCheckBoxMenuItem View_Status = new JCheckBoxMenuItem("状态栏(S)");
    //插入菜单项
    private JMenuItem Insert_DateTime = new JMenuItem("日期/时间(D)",'D');
    private JMenuItem Insert_Picture = new JMenuItem("图片(P)",'P');
    //格式菜单项
    private JCheckBoxMenuItem Format_Auto=new JCheckBoxMenuItem("自动换行(A)");
    private JMenuItem Format_Font=new JMenuItem("字体(F)",'F');
    private JMenuItem Format_FontColor=new JMenuItem("字体颜色(C)",'C');
    //帮助菜单项
    private JMenuItem Help_Theme = new JMenuItem("帮助主题(H)",'H');
    private JMenuItem Help_About = new JMenuItem("关于(A)",'A');
    //工具栏项目
    private JButton Tool_New = new JButton(new ImageIcon("pic/new.gif"));
    private JButton Tool_Open = new JButton(new ImageIcon("pic/open.gif"));
    private JButton Tool_Save = new JButton(new ImageIcon("pic/save.gif"));
    private JButton Tool_Print = new JButton(new ImageIcon("pic/print.gif"));
    private JButton Tool_Cut = new JButton(new ImageIcon("pic/cut.gif"));
    private JButton Tool_Copy = new JButton(new ImageIcon("pic/copy.gif"));
    private JButton Tool_Paste = new JButton(new ImageIcon("pic/paste.gif"));
    private JButton Tool_Undo = new JButton(new ImageIcon("pic/undo.gif"));
    private JButton Tool_Redo = new JButton(new ImageIcon("pic/redo.gif"));
    private JButton Tool_Delete = new JButton(new ImageIcon("pic/del.gif"));
    private JButton Tool_Find = new JButton(new ImageIcon("pic/find.gif"));
    private JButton Tool_DateTime = new JButton(new ImageIcon("pic/datetime.gif"));
    //格式栏项目
    private String[] fontlist = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
    private String[] sizelist = {"8","9","10","12","14","16","20","22","24","26","28","36","40","50","72"};
    private JComboBox FormatBar_Font = new JComboBox(fontlist);
    private JComboBox FormatBar_Size = new JComboBox(sizelist);
    private JButton FormatBar_Bold = new JButton(new ImageIcon("pic/bold.gif"));
    private JButton FormatBar_Itical = new JButton(new ImageIcon("pic/itcal.gif"));
    private JButton FormatBar_U = new JButton(new ImageIcon("pic/u.gif"));
    private JButton FormatBar_Color = new JButton(new ImageIcon("pic/color.gif"));
    private JButton FormatBar_Left = new JButton(new ImageIcon("pic/left.gif"));
    private JButton FormatBar_Center = new JButton(new ImageIcon("pic/center.gif"));
    private JButton FormatBar_Right = new JButton(new ImageIcon("pic/right.gif"));
    
    WordPad() {
        super("文档 - 写字板");
        //添加菜单及相关项目
        Menu_File.add(File_New);
        Menu_File.add(File_Open);
        Menu_File.add(File_Save);
        Menu_File.add(File_SaveAs);
        Menu_File.add(File_Exit);
        Menu_Edit.add(Edit_Undo);
        Menu_Edit.add(Edit_Redo);
        Menu_Edit.add(Edit_Copy);
        Menu_Edit.add(Edit_Cut);
        Menu_Edit.add(Edit_Paste);
        Menu_Edit.add(Edit_Del);
        Menu_Edit.add(Edit_SelectAll);
        Menu_Edit.add(Edit_Find);
        Menu_Edit.add(Edit_Replace);
        Menu_View.add(View_Tool);
        Menu_View.add(View_Format);
        Menu_View.add(View_Status);
        Menu_Insert.add(Insert_DateTime);
        Menu_Insert.add(Insert_Picture);
        Menu_Format.add(Format_Auto);
        Menu_Format.add(Format_Font);
        Menu_Format.add(Format_FontColor);
        Menu_Help.add(Help_Theme);
        Menu_Help.add(Help_About);
        MenuBar.add(Menu_File);
        MenuBar.add(Menu_Edit);
        MenuBar.add(Menu_View);
        MenuBar.add(Menu_Insert);
        MenuBar.add(Menu_Format);
        MenuBar.add(Menu_Help);
        //工具栏
        ToolBar.setSize(20,JFrame.MAXIMIZED_VERT);
        ToolBar.addSeparator();
        ToolBar.add(Tool_New);
        Tool_New.setToolTipText("新建");
        ToolBar.add(Tool_Open);
        Tool_Open.setToolTipText("打开");
        ToolBar.add(Tool_Save);
        Tool_Save.setToolTipText("保存");
        ToolBar.add(Tool_Print);
        Tool_Print.setToolTipText("打印");
        ToolBar.add(Tool_Cut);
        Tool_Cut.setToolTipText("剪切");
        ToolBar.add(Tool_Copy);
        Tool_Copy.setToolTipText("复制");
        ToolBar.add(Tool_Paste);
        Tool_Paste.setToolTipText("粘贴");
        ToolBar.add(Tool_Undo);
        Tool_Undo.setToolTipText("撤消");
        ToolBar.add(Tool_Redo);
        Tool_Redo.setToolTipText("恢复");
        ToolBar.add(Tool_Delete);
        Tool_Delete.setToolTipText("删除");
        ToolBar.add(Tool_Find);
        Tool_Find.setToolTipText("查找");
        ToolBar.add(Tool_DateTime);
        Tool_DateTime.setToolTipText("日期时间");
        //格式栏
        FormatBar.add(FormatBar_Font);
        FormatBar.add(FormatBar_Size);
        FormatBar.add(FormatBar_Bold);
        FormatBar.add(FormatBar_Itical);
        FormatBar.add(FormatBar_U);
        FormatBar.add(FormatBar_Color);
        FormatBar_Bold.setToolTipText("粗体");
        FormatBar_Itical.setToolTipText("斜体");
        FormatBar_U.setToolTipText("下划线");
        FormatBar_Color.setToolTipText("字体颜色");
        //为菜单栏添加监听器
        File_New.addActionListener(this);
        File_Open.addActionListener(this);
        File_Save.addActionListener(this);
        File_SaveAs.addActionListener(this);
        File_Exit.addActionListener(this);
        //为编辑菜单项添加监听器
        Edit_Undo.addActionListener(this);
        Edit_Redo.addActionListener(this);
        Edit_Cut.addActionListener(this);
        Edit_Paste.addActionListener(this);
        Edit_Del.addActionListener(this);
        Edit_SelectAll.addActionListener(this);
        Edit_Find.addActionListener(this);
        Edit_Replace.addActionListener(this);
        //为查看菜单项添加监听器
        View_Tool.addActionListener(this);
        View_Format.addActionListener(this);
        View_Status.addActionListener(this);
        //为插入菜单项添加监听器
        Insert_DateTime.addActionListener(this);
        Insert_Picture.addActionListener(this);
        //为格式菜单项添加监听器
        Format_Auto.addActionListener(this);
        Format_Font.addActionListener(this);
        Format_FontColor.addActionListener(this);
        //为帮助菜单项添加监听器
        Help_Theme.addActionListener(this);
        Help_About.addActionListener(this);
        //为工具栏添加监听器
        Tool_New.addActionListener(this);
        Tool_Open.addActionListener(this);
        Tool_Cut.addActionListener(this);
        Tool_Copy.addActionListener(this);
        Tool_Paste.addActionListener(this);
        Tool_Undo.addActionListener(this);
        Tool_Redo.addActionListener(this);
        Tool_Delete.addActionListener(this);
        Tool_Find.addActionListener(this);
        Tool_DateTime.addActionListener(this);
        //为格式栏添加监听器
        FormatBar_Font.addActionListener(this);
        FormatBar_Size.addActionListener(this);
        FormatBar_Bold.addActionListener(this);
        FormatBar_Itical.addActionListener(this);
        FormatBar_U.addActionListener(this);
        FormatBar_Color.addActionListener(this);
        FormatBar_Left.addActionListener(this);
        FormatBar_Center.addActionListener(this);
        FormatBar_Right.addActionListener(this);
        //为文本区添加监听器
        TextArea.getDocument().addDocumentListener(this);
        TextArea.getDocument().addUndoableEditListener(this);
        
        //菜单快捷键
        Menu_File.setMnemonic('F');
        Menu_Edit.setMnemonic('E');
        Menu_View.setMnemonic('L');
        Menu_Insert.setMnemonic('I');
        Menu_Format.setMnemonic('O');
        Menu_Help.setMnemonic('H');
        //状态的快捷键
        View_Tool.setMnemonic('T');
        View_Status.setMnemonic('S');
        View_Format.setMnemonic('O');
        //文件菜单快捷键
        File_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
        File_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
        File_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
        //编辑菜单快捷键
        Edit_Undo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
        Edit_Redo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,InputEvent.CTRL_MASK));
        Edit_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
        Edit_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
        Edit_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
        Edit_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
        Edit_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
        Edit_Del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
        Edit_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
        
        MenuBar.setVisible(true);
        ToolBar.setVisible(false);
        ToolBar.setFloatable(true);
        FormatBar.setVisible(false);
        FormatBar.setFloatable(true);
        StatusBar.setVisible(false);

        JPanel p=new JPanel();
        p.setLayout(new BorderLayout());
        p.add("North",ToolBar);
        p.add("South",FormatBar);
        Container c = getContentPane();
        c.setLayout(new BorderLayout());
        setJMenuBar(MenuBar);
        c.add("Center",jsp);
	c.add("North",p);
        sd = TextArea.getStyledDocument();
        setSize(767,536);
        setLocation(44,44);
        setVisible(true);
    }

    void New()
    {
        if(saved==true){}
        else if (File==null && TextArea.getText().equals("")){}
        else if(File==null)
        {
            int i = JOptionPane.showConfirmDialog(null,"将改动保存到 文档?","WordPad",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
            if(i==0)
                SaveAs();
            else if(i==2)
                return;
        }
        else if(File!=null)
        {
            int i = JOptionPane.showConfirmDialog(null,"将改动保存到"+File.getPath()+" 文档?","WordPad",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);
            if(i==0)
                Save();
            else if(i==2)
                return;
        }
        setTitle("文档 - 写字板");
        TextArea.setText("");
        File = null;
    }

    void SaveAssist(File fl)
    {
        FileOutputStream fos = null;
        try
        {
            fos = new FileOutputStream(fl);
            ObjectOutput oo = new ObjectOutputStream(fos);
            oo.writeObject(sd);
            oo.flush();
        }
        catch(IOException ioe)
        {
            System.err.println("IOException: " + ioe.getMessage());
        }
        String text = TextArea.getText();
//        try
//        {
//            fos.write(text.getBytes());
//        }
//        catch(IOException ioe)
//        {
//            System.err.println(ioe);
//        }
//        finally
//        {
//            try
//            {
//                if (fos != null)
//                fos.close();
//            }
//            catch(IOException ioe){}
//        }
        saved = true;
        setTitle(fl.getName()+" - 文档");
        File_Save.setEnabled(false);
        Tool_Save.setEnabled(false);
    }

⌨️ 快捷键说明

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