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

📄 texteditor.java

📁 一个简单的文本编辑器(java) 可一实现类似Windows记事本的基本功能
💻 JAVA
字号:
//文件TextEditor,java

package texteditor;

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.lang.String;
import java.net.URL.*;


public class TextEditor extends Frame{
                                      
	//定义
	private Frame f;
	private TextArea ta;
	private MenuBar mb; 
	
	private Menu fm1;          //定义文件菜单变量
	private MenuItem nmi;       
	private MenuItem omi;
	private MenuItem smi;
	private MenuItem sami;
    private MenuItem emi;
	
	private Menu em;           //定义编辑菜单变量
	private MenuItem cmi1;
	private MenuItem pmi;
	private MenuItem cmi2;
	private	MenuItem fmi;
	
	private Menu fm2;          //定义格式菜单变量
	private CheckboxMenuItem cbmi;
	private MenuItem wfmi;
	
	private Menu vm;           //定义查看菜单变量
	private MenuItem sbmi;
	
	private Menu hm;           //定义帮助菜单变量
	private MenuItem htmi;
	private MenuItem ami;
	
	private boolean changed;       //定义文件是否已经保存的布尔型的类成员变量
	private String fileName =null,s=null;
	
	
	
	public static void main(String args[]){
		TextEditor te = new TextEditor();
		te.init();
	}
	
    public void init(){ 
        f=new Frame("记事本");
        
        mb=new MenuBar();    //创建菜单栏对象
        
        //创建文件菜单及其菜单项对象
        fm1=new Menu("文件(F)");
        nmi=new MenuItem("新建(N)",new MenuShortcut(KeyEvent.VK_N));
        omi=new MenuItem("打开(O)...",new MenuShortcut(KeyEvent.VK_O));
    	smi=new MenuItem("保存(S)",new MenuShortcut(KeyEvent.VK_S));
    	sami=new MenuItem("另存为(A)...",new MenuShortcut(KeyEvent.VK_A));
    	emi=new MenuItem("退出(X)");
    	
    	//创建编辑菜单及其菜单项对象
    	em=new Menu("编辑(E)");
    	cmi1=new MenuItem("复制(C)",new MenuShortcut(KeyEvent.VK_C));
    	pmi=new MenuItem("粘贴(V)",new MenuShortcut(KeyEvent.VK_V));
	    cmi2=new MenuItem("剪切(T)",new MenuShortcut(KeyEvent.VK_X));
	    fmi=new MenuItem("查找(F)...",new MenuShortcut(KeyEvent.VK_F));
	    
	    //创建格式菜单及其菜单项对象
	    fm2=new Menu("格式(O)");
	    cbmi=new CheckboxMenuItem("自动换行(W)",true);
	    wfmi=new MenuItem("字体(F)...");
	    
	    //创建查看菜单及其菜单项对象
	    vm=new Menu("查看(V)");
	    sbmi=new MenuItem("状态栏(S)");
	    
	    //创建帮助菜单及其菜单项对象
	    hm=new Menu("帮助(H)");
	    htmi=new MenuItem("帮助主题(H)");
	    ami=new MenuItem("关于记事本(A)");
	    
	    //文件菜单设置开始
	    
	    //设置新建菜单项动作监听
	    nmi.addActionListener(new ActionListener(){
	        public void actionPerformed(ActionEvent e){
	           int n;
		       Object[] option={
		       	"YES","NO","CANCEL"
		       };
		
		       if(changed==true){
			       n=JOptionPane.showOptionDialog(null,"你的文件还没有保存,你想现在保存吗?","保存",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE,null,option,option[0]);
			       switch(n){
				       case JOptionPane.YES_OPTION:{
					       doSave(fileName);
					       fileName="";
				           ta.setText("");
					       changed=false;
					       break;
			           }
				       case JOptionPane.NO_OPTION:{
					       fileName="";
					       ta.setText("");
					       changed=false;
					       break;
				       }
								  	
				       case JOptionPane.CANCEL_OPTION:{
					       break;
				       }
				       default:
			       }
		       }
		       else{
			       fileName="";
			       ta.setText("");
		       }
	    
	        }
	    });
	    
	    fm1.add(nmi);      //将新建菜单项加入到文件菜单
	    
	    //打开菜单项的设置
	    omi.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	    //被选择时会显示一个文件对话框让用户选择文本编辑		
	             FileDialog dk=new FileDialog(f,"Open...",FileDialog.LOAD);
		         dk.show();
		         if(dk.getFile()==null){
		   	         return;
		   	     }
		
		//取得文件名(包括路径)
		         fileName=dk.getDirectory() + File.separator + dk.getFile();
		         FileInputStream fis=null;    //定义输入流
		         String str=null;   
		
		         try{
			         fis=new FileInputStream(fileName);   //创建打开文件的输入流	
			         int size=fis.available();
			
			         byte[] bytes=new byte[size];
			         fis.read(bytes);
			         str=new String(bytes);
		         }
		         catch(IOException e1){}
		         finally{
			         try{
				         fis.close();
		             }
		             catch(IOException e2){}
		         }
		  
		  
		         if(str !=null){
		 	        ta.setText(str);
		         }
		 
		         changed=false; 
	        }
	    });		
	    
	    fm1.add(omi);
	    
	    //保存菜单项的设置	
	    smi.addActionListener(new ActionListener(){
	        public void actionPerformed(ActionEvent e){
	       //被选择时,保存当前文件         	
	            doSave(fileName);
	        }
	    });
	    
	    fm1.add(smi);
	    
	    
	    //另存为菜单项的设置		
	    sami.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	               	//被选择时,实现对文件的保存
	             doSaveAs();
	         }
	    });
	    
	    fm1.add(sami);
	    
	    fm1.addSeparator();   //加入分隔符到文件菜单中
	    
	    //退出菜单项的设置
	    emi.addActionListener(new ActionListener(){
	        public void actionPerformed(ActionEvent e){
	    //被选择时,关闭当前程序	
	            int n;
		        Object[] option={
		        	"YES","NO"
		        };
		
			    n=JOptionPane.showOptionDialog(null,"你的文件还没有保存,你想现在保存吗?","记事本",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,option,option[0]);
			    if(n==JOptionPane.YES_OPTION){
				   doSave(fileName);
				   System.exit(0);
			    }
			    else if(n==JOptionPane.NO_OPTION){
			        System.exit(0);
			    }	 
		    }
		        	
	    });
	    
	    fm1.add(emi);
	    
	    mb.add(fm1);    //添加文件菜单
	    
	    //文件菜单设置结束
	    
	    
	    //编辑菜单设置开始
	    
	    //设置复制菜单项	
	    cmi1.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	               //当前选定的文字被复制到"剪贴板"
	             s=ta.getText();
	         }
	    });
	    
	    em.add(cmi1);
	    
	    //设置粘贴菜单项		
	    pmi.addActionListener(new ActionListener(){
	        public void actionPerformed(ActionEvent e){
	               	//"剪贴板"中的文字被粘贴到文本区域中 
	            ta.setText(s);
	        }
	    });
	    
	    em.add(pmi);
	    
	   
	    //设置剪切菜单项		
	    cmi2.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	               	//当前选定的文字被剪切到"剪贴板"
	             s=ta.getText();
	             ta.setText("");
		          
	         }	
	               	
	    });
	    
	    em.add(cmi2);
	    
	    em.addSeparator(); 
	    
	    //设置查找菜单项		
	    fmi.addActionListener(new ActionListener(){
	        public void actionPerformed(ActionEvent e){
	               	
	               	//创建一个查找对话框
	            FileDialog fd=new  FileDialog(f,"查找");
	            fd.show();
	       }					
	
	    });
	   
	    em.add(fmi);
	    
	    mb.add(em);
	    
	    //编辑菜单设置结束
	    
	    
	    //格式菜单设置开始
	    
	    //设置自动换行菜单项		
	    cbmi.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	               	
	               	//未实现
	         }
	               	
	    });
	    
	    fm2.add(cbmi);
	    
	   
	    //设置字体菜单项		
	    wfmi.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	               
	               //未实现
	         }
	     });
	    
	    fm2.add(wfmi);
	    
	    mb.add(fm2);
	    
	    //格式菜单设置结束
	    
	   
	    //查看菜单设置开始
	    
	    //设置状态栏菜单项		
	    sbmi.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	               	//未实现
	         }
	    });
	    
	    vm.add(sbmi);
	    
	    mb.add(vm);
	    
	    //查看菜单设置结束
	    
	    
	    //帮助菜单设置开始
	   
	    //设置帮助主题菜单项		
	    htmi.addActionListener(new ActionListener(){
	         public void actionPerformed(ActionEvent e){
	    
	                    //显示一个关于帮助信息的对话框
                 Dialog h=new  Dialog(f,"帮助主题");
	             h.addWindowListener(new WindowAdapter() {
                      public void windowClosing(WindowEvent e) {
                          dispose();
                      }
                 });
                 Label la = new Label("'记事本'概述");                    
                 h.add("Center",la);
                 h.setLocation(120, 150);
                 h.setResizable(false);
                 h.setSize(400,200);
                 h.setVisible(true);
	         }
	    });
	    
	    hm.add(htmi);
	    
	    hm.addSeparator(); 
	    
	   //设置关于记事本菜单项	
	    ami.addActionListener(new ActionListener(){
	        public void actionPerformed(ActionEvent e){
	     
	                   //显示一个关于记事本的对话框
	             Dialog gh=new Dialog(f,"关于记事本");
	             gh.addWindowListener(new WindowAdapter() {
                     public void windowClosing(WindowEvent e) {
                          dispose();
                     }
                 });
                 Label lab = new Label("本产品符合最终用户协议,授权给gam  rat");                    
                 gh.add("Center",lab);
                 gh.setLocation(120, 150);
                 gh.setResizable(false);
                 gh.setSize(400,200);
                 gh.setVisible(true);
	    
	        }
	    });
	    
	    hm.add(ami);
	    
	    mb.add(hm);
	    
	    //帮助菜单设置结束
	    
	   
	    //结束创建菜单
	    
	    
	    ta=new TextArea();     //创建文本区对象
	    
	    f.setMenuBar(mb);
	    f.add("Center",ta);
	    f.setSize(600,350);
	    f.setVisible(true);
	    f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
        //关闭应用程序
                int n;
		        Object[] option={
		        	"YES","NO"
		        };
		
		
			    n=JOptionPane.showOptionDialog(null,"你的文件还没有保存,你想现在保存吗?","保存",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,option,option[0]);
			  
			    if(n==JOptionPane.YES_OPTION){
				    doSave(fileName);
				    System.exit(0);
			    }
			    else if(n==JOptionPane.NO_OPTION){
			        System.exit(0);
			    }	
		
            }
        });

    }//init()结束
  
  	//将文本区中的内容保存到文件
	private void doSave(String fileName){
    	FileOutputStream fos = null; 
    	if(fileName ==""){ 
    	    doSaveAs();
    	}
    	else{
    		String str = ta.getText();
    		try{
    			fos = new FileOutputStream(fileName);
    			fos.write(str.getBytes());
    		}
    		catch(IOException e1){}
    		finally{
    			try{
    				fos.close();
    			}
    			catch(IOException e2){}
    		}
    		changed = false;
    	}
    }
    
    //将当前文件保存为另外一个与原来文件名不同的文件
    private void doSaveAs(){
    	FileOutputStream fos = null; 
    	String str = ta.getText();
    	FileDialog bc = new FileDialog(f,"Save As...",FileDialog.SAVE);
    	bc.show();
    	
    	if(bc.getFile() == null){
    		return;
    	}
    	
    	fileName =bc.getDirectory() + File.separator + bc.getFile();
    	try{
    		fos = new FileOutputStream(fileName);
    		fos.write(str.getBytes());
    	}
    	catch(IOException e1){}
    	finally{
    		try{
    			fos.close();
    		}
    		catch(IOException e2){}
    	}
    	changed = false;
    }
  
}    		 

⌨️ 快捷键说明

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