📄 wordpad.java
字号:
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 + -