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

📄 text editor.txt

📁 A simple Java Based Text Editor
💻 TXT
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import java.applet.*;
import java.io.*;
import javax.swing.*;
import javax.swing.undo.*;
import java.util.Hashtable;
class UndoableTextArea extends TextArea implements StateEditable
 {
  private final static String KEY_STATE="UndoableTextAreaKey";
  private boolean textChanged=false;
  private UndoManager undoManager;
  private StateEdit currentEdit;

  public UndoableTextArea()
     {
      super();
      initUndoable();
     }
  public UndoableTextArea(String string)
      {
       super(string);
       initUndoable();
      }
  public UndoableTextArea(int rows,int columns)
      {
       super(rows,columns);
       initUndoable();
      }
  public UndoableTextArea(String string,int rows,int columns)
         {
          super(string,rows,columns);
          initUndoable();
         }
  public UndoableTextArea(String string,int rows,int columns,int
scrollbars)
      {
       super(string,rows,columns,scrollbars);
       initUndoable();
      }

   public boolean undo(){
    try{
        undoManager.undo();
        return true;
       }
     catch(CannotUndoException e)
        {
        System.out.println("cannot undo");
        return false;
        }
     }
    public boolean redo()
       {
       try{
         undoManager.redo();
         return true;
         }
      catch(CannotRedoException e)
          {
            System.out.println("cannot redo");
            return false;
         }
       }


    public void storeState(Hashtable state)
       {
        state.put(KEY_STATE,getText());
       }

    public void restoreState(Hashtable state)
        {
         Object data=state.get(KEY_STATE);
         if(data!=null){
          setText((String)data);
          }
        }

   private void takeSnapshot()
       {
        if(textChanged)
        {
         currentEdit.end();
         undoManager.addEdit(currentEdit);
         textChanged=false;
         currentEdit=new StateEdit(this);
         }
        }

     private void initUndoable()
       {
         undoManager =new UndoManager();
         currentEdit=new StateEdit(this);
         addKeyListener(new KeyAdapter(){
          public void keyPressed(KeyEvent event){
          if(event.isActionKey()){
          takeSnapshot();
          }
         }
        });

          addFocusListener(new FocusAdapter(){
         public void focusLost(FocusEvent fe){
          takeSnapshot();
          }
          });

         addTextListener(new TextListener(){
         public void textValueChanged(TextEvent e){
         textChanged=true;
         takeSnapshot();
         }
         });

      }
   }


public class TextEditor extends Frame
{
        boolean b=true;
        Frame fm;
         FileDialog fd;
         Font f;
         int style=Font.PLAIN;
         int fsize=12;
         UndoableTextArea txt;
         String filename,st,fn="untitled",dn;
         Clipboard clip=getToolkit().getSystemClipboard();
         TextEditor()
         {
                 f=new Font("Courier",style,fsize);
                 setLayout(new GridLayout(1,1));
                 txt=new UndoableTextArea(80,25);

                 txt.setFont(f);
                 add(txt);
                 MenuBar mb=new MenuBar();
                 Menu fonttype=new Menu("FontType");
                 MenuItem one,two,three,four,five,six;
                 one=new MenuItem("TimesRoman");
                 two=new MenuItem("Helvetica");
                 three=new MenuItem("Courier");
                 four=new MenuItem("Arial");
                 five=new MenuItem("Arial Black");
                 six=new MenuItem("Century");

                 fonttype.add(one);
                 fonttype.add(two);
                 fonttype.add(three);
                 fonttype.add(four);
                 fonttype.add(five);
                 fonttype.add(six);
                 one.addActionListener(new Type());
                 two.addActionListener(new Type());
                 three.addActionListener(new Type());
                 four.addActionListener(new Type());
                 five.addActionListener(new Type());
                 six.addActionListener(new Type());

                 Menu fontmenu=new Menu("Font");
                 MenuItem boldmenu=new MenuItem("Bold");
                 MenuItem plainmenu=new MenuItem("Plain");
                 MenuItem italicmenu=new MenuItem("Italic");
                 fontmenu.add(boldmenu);
                 fontmenu.add(plainmenu);
                 fontmenu.add(italicmenu);
                 boldmenu.addActionListener(new FM());
                 plainmenu.addActionListener(new FM());
                 italicmenu.addActionListener(new FM());
                 Menu size=new Menu("Size");
                 MenuItem s1,s2,s3,s4,s5,s6,s7,s8,s9,s10;
                 s1=new MenuItem("10");
                 s2=new MenuItem("12");
                 s3=new MenuItem("14");
                 s4=new MenuItem("16");
                 s5=new MenuItem("18");
                 s6=new MenuItem("20");
                 s7=new MenuItem("22");
                 s8=new MenuItem("24");
                 s9=new MenuItem("26");
                 s10=new MenuItem("28");
                 size.add(s1);
                 size.add(s2);
                 size.add(s3);
                 size.add(s4);
                 size.add(s5);
                 size.add(s6);
                 size.add(s7);
                 size.add(s8);
                 size.add(s9);
                 size.add(s10);

                 s1.addActionListener(new Size());
                 s2.addActionListener(new Size());
                 s3.addActionListener(new Size());
                 s4.addActionListener(new Size());
                 s5.addActionListener(new Size());
                 s6.addActionListener(new Size());
                 s7.addActionListener(new Size());
                 s8.addActionListener(new Size());
                 s9.addActionListener(new Size());
                 s10.addActionListener(new Size());
                 size.addActionListener(new FM());
                 fontmenu.add(size);
                 Menu file=new Menu("File");
                 MenuItem n=new MenuItem("New",new
MenuShortcut(KeyEvent.VK_N));
                 MenuItem o=new MenuItem("Open",new
MenuShortcut(KeyEvent.VK_O));
                 MenuItem s=new MenuItem("Save",new
MenuShortcut(KeyEvent.VK_S));
                 MenuItem e=new MenuItem("Exit",new
MenuShortcut(KeyEvent.VK_E));
                 n.addActionListener(new New());
                 file.add(n);
                 o.addActionListener(new Open());
                 file.add(o);
                 s.addActionListener(new Save());
                 file.add(s);
                 e.addActionListener(new Exit());
                 file.add(e);
                 mb.add(file);
                 addWindowListener(new Win());
                 Menu edit=new Menu("Edit");
                 MenuItem cut=new MenuItem("Cut",new
MenuShortcut(KeyEvent.VK_X));
                 MenuItem copy=new MenuItem("Copy",new
MenuShortcut(KeyEvent.VK_C));
                 MenuItem paste=new MenuItem("Paste",new
MenuShortcut(KeyEvent.VK_V));
                 cut.addActionListener(new Cut());
                 edit.add(cut);
                 copy.addActionListener(new Copy());
                 edit.add(copy);
                 paste.addActionListener(new Paste());
                 edit.add(paste);
                 Menu color =new Menu("Color");
                 MenuItem Bg=new MenuItem("Background");
                 MenuItem Fg=new MenuItem("Foreground");
                 Bg.addActionListener(new BC());
                 Fg.addActionListener(new BC());
                 Menu undo=new Menu("Undo&Redo");
             MenuItem un=new MenuItem("Undo");
             MenuItem re=new MenuItem("Redo");
             re.addActionListener(new WW());
             un.addActionListener(new WW());
             undo.add(un);
             undo.add(re);
                 color.add(Bg);
                 color.add(Fg);
                 mb.add(edit);
                 mb.add(fontmenu);
                 mb.add(fonttype);
             mb.add(color);
             mb.add(undo);
                 setMenuBar(mb);


                 mylistener mylist=new mylistener();
                 addWindowListener(mylist);
         }

     class WW implements ActionListener
          {
            public void actionPerformed(ActionEvent e)
            {
              String se=e.getActionCommand();
              if(se.equals("Undo"))
              txt.undo();
            if(se.equals("Redo"))
            txt.redo();

            }
        }
 class mylistener extends WindowAdapter
         {
         public void windowClosing(WindowEvent we)
                 {
                   if(!b)
                 System.exit(0);
                 }
         }
 class New implements ActionListener
        {
        public void actionPerformed(ActionEvent ae)
                  {
                  txt.setText(" ");
                  setTitle(filename);
                  fn="Untitled";
                  }
         }
 class Open implements ActionListener
         {
                  public void actionPerformed(ActionEvent ae)
                  {
                   FileDialog fd=new FileDialog(TextEditor.this,"Select
File",FileDialog.LOAD);
                   fd.show();
                   if((fn=fd.getFile())!=null)
                    {
                    filename=fd.getDirectory()+fd.getFile();
                    dn=fd.getDirectory();
                    setTitle(filename);
                    readFile();
                    }
                    txt.requestFocus();
                  }
         }


 class Save implements ActionListener
          {
                  public void actionPerformed(ActionEvent ae)
                  {
                    FileDialog fd=new FileDialog(TextEditor.this,"Save
File",FileDialog.SAVE);
                    fd.setFile(fn);
                    fd.setDirectory(dn);
                    fd.show();

                   if(fd.getFile()!=null)
                    {
                     filename=fd.getDirectory()+fd.getFile();
                     setTitle(filename);
                     writeFile();
                  txt.requestFocus();
                    }
              }
         }

  class Exit implements ActionListener
          {

⌨️ 快捷键说明

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