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

📄 textediter.java

📁 文本编辑器Java语言实现,很好的一个Java源程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;
public class Textediter implements ActionListener//,DocumentListener//,FilenameFilter
{JFrame f=new JFrame("无标题 - 记事本");
 JTextArea tf=new JTextArea();
// tf.addDocumentListener(this);
 JScrollPane jsp=new JScrollPane(tf);
 JMenuBar bar=new JMenuBar();
 JMenu menu1=new JMenu("文件(F)");
 JMenu menu2=new JMenu("编辑(E)");
 JMenu menu3=new JMenu("格式(O)");
 JMenu menu4=new JMenu("查看(V)");
 JMenu menu5=new JMenu("帮助(H)");
 JMenuItem newf=new JMenuItem("  新建(N)   Ctrl+N");
 JMenuItem openf=new JMenuItem("  打开(O)   Ctrl+O");
 JMenuItem savef=new JMenuItem("  保存(S)   Ctrl+S");
 JMenuItem saveasf=new JMenuItem("  另存为(A)");
 JMenuItem quitf=new JMenuItem("  退出(X)");
 JMenuItem cancel=new JMenuItem("  撤消(U)   Ctrl+U");
 JMenuItem copy=new JMenuItem("  复制(C)   Ctrl+C");
 JMenuItem cut=new JMenuItem("  剪切(T)   Ctrl+X");
 JMenuItem paste=new JMenuItem("  粘贴(P)   Ctrl+V");
 JMenuItem search=new JMenuItem("  查找(F)");
 JMenuItem replace=new JMenuItem("  替换(R)");
 JMenuItem selectall=new JMenuItem("  全选(A)   Ctrl+A");
 JMenuItem del=new JMenuItem("  删除(L)   Delete");
 JMenuItem tmda=new JMenuItem("  时间/日期(D)");
 JMenuItem gesi=new JMenuItem("    字体(F)");
 JMenuItem autorc=new JMenuItem("  自动换行(W)");
 JPopupMenu pmenu=new JPopupMenu();
 JMenuItem cancel1=new JMenuItem("  撤消(U)   Ctrl+U");
 JMenuItem copy1=new JMenuItem("  复制(C)   Ctrl+C");
 JMenuItem cut1=new JMenuItem("  剪切(T)   Ctrl+X");
 JMenuItem paste1=new JMenuItem("  粘贴(P)   Ctrl+V");
 JMenuItem del1=new JMenuItem("  删除(L)   Delete");
 JMenuItem selall=new JMenuItem("  全选(A)   Ctrl+A");
      //pmenu.add(new JMenuItem(""));
 File file;
 JDialog dialog;
  JPanel jp;
  JLabel lb1,lb2,lb3,lb4,lb5;
  JComboBox cb1,cb2,cb3;
  JButton btn1,btn2,btn3,btn4,btn5,btn6;
  //Button btn4;
  TextField fd1=new TextField("");
  TextField fd2=new TextField("");
  Container diacp;
  //Point point;
  String cbxstr1,cbxstr2,cbxstr3,buffer,temptext;
  int cbxint2=0,cbxint3=10;int cace=1;
  boolean isopen=false,issaved=false,isnewf=true,iskey=false;
  int posi=0,isbtn3=0;String serp;
 public Textediter()
 {
  f.getContentPane().add(jsp);
  //bar.setOpaque(true);
  f.setJMenuBar(bar);//jsp.setBackground(Color.white);
  f.setBackground(Color.white);
  tf.setBackground(Color.white);
  tf.setFont(new Font("宋体",Font.BOLD,25));
  tf.addMouseListener(new MyMouseAdapter());
  tf.addKeyListener(new MyKeyAdapter());
  menu1.add(newf);menu1.add(openf);menu1.add(savef);menu1.add(saveasf);menu1.addSeparator();menu1.add(quitf);
  menu2.add(cancel);menu2.addSeparator();menu2.add(cut);menu2.add(copy);menu2.add(paste);menu2.add(del);menu2.addSeparator();
  menu2.add(search);menu2.add(replace);menu2.addSeparator();
  menu2.add(selectall);menu2.add(tmda);
  menu3.add(autorc);menu3.add(gesi);
  bar.add(menu1);bar.add(menu2);bar.add(menu3);bar.add(menu4);bar.add(menu5);
  menu1.setMnemonic('F');
  menu2.setMnemonic('E');
  menu3.setMnemonic('O');
  menu4.setMnemonic('V');
  menu5.setMnemonic('H');
  newf.setMnemonic('N');
  openf.setMnemonic('O');
  savef.setMnemonic('S');
  saveasf.setMnemonic('A');
  quitf.setMnemonic('X');
  cancel.setMnemonic('U');
  cut.setMnemonic('T');
  copy.setMnemonic('C');
  paste.setMnemonic('P');
  del.setMnemonic('L');
  selectall.setMnemonic('A');
  cancel1.setMnemonic('U');
  cut1.setMnemonic('T');
  copy1.setMnemonic('C');
  paste1.setMnemonic('P');
  del1.setMnemonic('L');
  selall.setMnemonic('A');
  search.setMnemonic('F');
  replace.setMnemonic('R');
  tmda.setMnemonic('D');
  autorc.setMnemonic('W');
  gesi.setMnemonic('F'); 
  newf.addActionListener(this);
  openf.addActionListener(this);
  savef.addActionListener(this);
  saveasf.addActionListener(this);
  quitf.addActionListener(this);
  cancel.addActionListener(this);
  cut.addActionListener(this);
  copy.addActionListener(this);
  paste.addActionListener(this);
  del.addActionListener(this);
  search.addActionListener(this);
  replace.addActionListener(this);
  tmda.addActionListener(this);
  selectall.addActionListener(this);
  autorc.addActionListener(this);
  gesi.addActionListener(this);
  tf.setLineWrap(true);autorc.setLabel("√自动换行(W)");//setName("√自动换行(W)");
  pmenu.add(cancel1);pmenu.addSeparator();cancel1.addActionListener(this);
  pmenu.add(cut1);cut1.addActionListener(this);
  pmenu.add(copy1);copy1.addActionListener(this);
  pmenu.add(paste1);paste1.addActionListener(this);
  pmenu.add(del1);del1.addActionListener(this);
  pmenu.addSeparator();
  pmenu.add(selall);selall.addActionListener(this);
  int fnub=1;
  file=new File("新建 文本文档.txt");
  while(file.exists()==true)
    {file=new File("新建 文本文档("+fnub+").txt");
     fnub++;
    }  
  f.setSize(600,500);
  f.setLocation(250,200); 
  f.setVisible(true);
  f.addWindowListener(new WinLis());
  
 }
 //public void changedUpdate(DocumentEvent e)
 //{
 //}
 //pubilc boolean accept(File fl,".txt")
// {
// }
 public void actionPerformed(ActionEvent e)
 {if(e.getSource()==newf)
       {int ms;
        //if(isnewf==true&&)
        if(issaved==false&&tf.getText().length()!=0)
          {ms=JOptionPane.showConfirmDialog(f,"文件"+file.getAbsolutePath()+"\n已经改变,想保存文件吗?","记事本",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE);                  
           if(ms==0)
           {if(isnewf==true&&tf.getText().length()!=0)
           {FileDialog fdag=new FileDialog(f,"保存",1);
   	        fdag.setSize(300,250);
   	        fdag.setVisible(true);
   	        if(fdag.getFile()!=null)
   	        {
   	         String st=fdag.getDirectory()+fdag.getFile();
             try
             { file=new File(st);
               FileOutputStream fout=new FileOutputStream(file);
               DataOutputStream out=new DataOutputStream(fout);
               out.writeBytes(tf.getText());//tf.setText("");f.setTitle("无标题 - 记事本");
               JOptionPane.showMessageDialog(f,"文件已成功保存在:\n"+file.getAbsolutePath(),"保存信息",JOptionPane.PLAIN_MESSAGE);
               //f.setTitle(file.getName().substring(0,file.getName().indexOf('.'))+" - 记事本");
               tf.setText("");
               f.setTitle("无标题 - 记事本");
               isnewf=false;issaved=true;
             }
             catch(Exception E)
             {System.out.println("I/O错误!");}
            }	
           }
   	       else
   	         {try
   	          {FileOutputStream fout=new FileOutputStream(file);
               DataOutputStream out=new DataOutputStream(fout);
               out.writeBytes(tf.getText());
               out.close();
               JOptionPane.showMessageDialog(f,"文件"+file.getAbsolutePath()+"\n已成功保存!","保存信息",JOptionPane.PLAIN_MESSAGE);
               tf.setText("");
               f.setTitle("无标题 - 记事本");
               isnewf=false;issaved=true;
              }
              catch(Exception E)
              {System.out.println("I/O错误!");}
             }
           }
           if(ms==1){tf.setText("");}
           
          }
          int fnub=1;
           file=new File("新建 文本文档.txt");
           while(file.exists()==true)
           {file=new File("新建 文本文档("+fnub+").txt");fnub++;
           }
           isnewf=true;issaved=false;
       }
  if(e.getSource()==openf)
   {
   	FileDialog fdag=new FileDialog(f,"打开");
   	fdag.setSize(300,250);
   	fdag.setVisible(true);
   	if(fdag.getFile()!=null)
   	{String st=fdag.getDirectory()+fdag.getFile();
   	file=new File(st);
   	try
     {FileInputStream fin=new FileInputStream(file);
     // DataInputStream in=new DataInputStream(fin);
      int len=(int)file.length();
      byte bt[]=new byte[len];
      fin.read(bt,0,len);
       st=new String(bt);
       //st=in.readUTF();
      tf.setText(st);
      f.setTitle(file.getName().substring(0,file.getName().indexOf('.'))+" - 记事本");
      isnewf=false;issaved=true;
     }
     catch(Exception E)
     {System.out.println("I/O错误!");}
     }
     
    } 
   
  if(e.getSource()==savef)
   {if(isnewf==true)
     {FileDialog fdag=new FileDialog(f,"保存",1);
   	  fdag.setSize(300,250);
   	  fdag.setVisible(true);
   	  if(fdag.getFile()!=null)
   	  {
   	   String st=fdag.getDirectory()+fdag.getFile();
       try
        { file=new File(st);
          FileOutputStream fout=new FileOutputStream(file);
          DataOutputStream out=new DataOutputStream(fout);
          out.writeBytes(tf.getText());//tf.setText("");f.setTitle("无标题 - 记事本");
          JOptionPane.showMessageDialog(f,"文件已成功保存在:\n"+file.getAbsolutePath(),"保存信息",JOptionPane.PLAIN_MESSAGE);
          f.setTitle(file.getName().substring(0,file.getName().indexOf('.'))+" - 记事本");
         isnewf=false;issaved=true;
        }
       catch(Exception E)
        {System.out.println("I/O错误!");
        }
       }	
     }
   	 else
   	 {try
   	  {FileOutputStream fout=new FileOutputStream(file);
       DataOutputStream out=new DataOutputStream(fout);
      out.writeBytes(tf.getText());
      out.close();
       JOptionPane.showMessageDialog(f,"文件"+file.getAbsolutePath()+"\n已成功保存!","保存信息",JOptionPane.PLAIN_MESSAGE);
      isnewf=false;issaved=true;
      }
      catch(Exception E)
      {System.out.println("I/O错误!");}
     }
      
   }
  if(e.getSource()==saveasf)
     {FileDialog fdag=new FileDialog(f,"另存为",1);
   	  fdag.setSize(300,250);
   	  fdag.setVisible(true);
   	  if(fdag.getFile()!=null)
   	  {
   	   String st=fdag.getDirectory()+fdag.getFile();
       try
        { file=new File(st);
          FileOutputStream fout=new FileOutputStream(file);
          DataOutputStream out=new DataOutputStream(fout);
          out.writeBytes(tf.getText());//tf.setText("");f.setTitle("无标题 - 记事本");
          JOptionPane.showMessageDialog(f,"文件已成功保存在:\n"+file.getCanonicalPath(),"另存为信息",JOptionPane.PLAIN_MESSAGE);
          f.setTitle(file.getName().substring(0,file.getName().indexOf('.'))+" - 记事本"); 
        }
       catch(Exception E)
        {System.out.println("I/O错误!");
        }isnewf=false;issaved=true;	
      }

⌨️ 快捷键说明

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