mytexteditor.java

来自「简单文本编辑器」· Java 代码 · 共 119 行

JAVA
119
字号
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.lang.*;
public class MyTextEditor extends Frame implements ActionListener
{
      TextArea text;
      MenuBar menubar;
      Menu file,util;
      MenuItem open,save,quit,count,reverse;
      FileReader readfile;BufferedReader input;
      FileWriter writefile;BufferedWriter output;
      FileDialog savefile,openfile;
      Dialog countcharacter;TextField mycount;Label label;
MyTextEditor()
{
super("text editor");
setSize(300,350);
setVisible(true);
menubar=new MenuBar();
file=new Menu("File");
open=new MenuItem("Open");save=new MenuItem("Save");quit=new MenuItem("Quit");
open.addActionListener(this);save.addActionListener(this);quit.addActionListener(this);
file.add(open);file.add(save);file.addSeparator();file.add(quit);
util=new Menu("Util");
count=new MenuItem("Count");reverse=new MenuItem("Reverse");
count.addActionListener(this);reverse.addActionListener(this);
util.add(count);util.add(reverse);
menubar.add(file);menubar.add(util);
setMenuBar(menubar);
text=new TextArea(200,200);add(text,BorderLayout.CENTER);
savefile=new FileDialog(this,"保存文件对话框",FileDialog.SAVE);
openfile=new FileDialog(this,"打开文件对话框",FileDialog.LOAD);
countcharacter=new Dialog(this,"计数对话框",false);
label=new Label("显示计数结果");
mycount=new TextField(30);
countcharacter.add(label,BorderLayout.NORTH);countcharacter.add(mycount,BorderLayout.CENTER);
countcharacter.pack();
openfile.addWindowListener(new WindowAdapter()
                           {public void windowClosing(WindowEvent e)
                               {openfile.setVisible(false);
                                }
                             });
savefile.addWindowListener(new WindowAdapter()
                           {public void windowClosing(WindowEvent e)
                               {savefile.setVisible(false);
                                }
                             });
countcharacter.addWindowListener(new WindowAdapter()
                           {public void windowClosing(WindowEvent e)
                               {countcharacter.setVisible(false);
                                }
                             });
}

public void actionPerformed(ActionEvent e)
{
      if(e.getSource()==open)
     {  openfile.setVisible(true);
        text.setText(null);
        String s;
        if(openfile.getFile()!=null)
        {   
           try{
                  File in=new File(openfile.getDirectory(),openfile.getFile());
                  readfile=new FileReader(in);
                   input=new BufferedReader(readfile);
                 while((s=input.readLine())!=null)text.append(s+'\n');
                  input.close();readfile.close();
              }catch(IOException e2) {}
       }
     }
    else if(e.getSource()==save)
         {
                savefile.setVisible(true);
                if(savefile.getFile()!=null)
                {  
                   try{
                         File out=new File(savefile.getDirectory(),savefile.getFile());
                         writefile=new FileWriter(out);
                          output=new BufferedWriter(writefile);
                         output.write(text.getText(),0,(text.getText()).length());
                         output.flush();output.close();writefile.close();
                       }catch(IOException e2) {}
                }
        }
        else if(e.getSource()==count)
             {   
                 countcharacter.setVisible(true);
                 String s=String.valueOf((text.getText()).length());
                 mycount.setText(s);
             } 
            else if(e.getSource()==reverse)
                 {
                     String s=text.getText();
                     StringTokenizer fenxi=new StringTokenizer(s,"\n");
                     int n=fenxi.countTokens();
                      String a[]=new String[n];
                     for(int t=0;t<n;t++){String temp=fenxi.nextToken();a[t]=temp;}
                     for(int t=0;t<n;t++)
                    {     char b[]=a[t].toCharArray();
                         for(int j=0,i=a[t].length()-1;j<=i;j++,i--)
                         {   char c=b[j];b[j]=b[i];b[i]=c;}
                         String ss=new String(b);
                         if(t==0)text.setText(ss+'\n');
                         else    text.append(ss+'\n');
                         
                    }
                }
          else if(e.getSource()==quit)
              { dispatchEvent(new WindowEvent(MyTextEditor.this,WindowEvent.WINDOW_CLOSING));
              }
}
public static void main(String args[])
{  MyTextEditor f=new MyTextEditor();
   f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
}
}

⌨️ 快捷键说明

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