java文本编辑软件代码

这是小编在csdn第一篇博文,闲话不多说,直接上代码:

 

该编辑器能够类似记事本,能实现文件的打开,保存,文本的复制,粘贴,查找,替换等功能,效果图如下:

 

源码如下:

package A;

import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;

public class ShiYan1 extends JFrame{
	JMenuBar mb; 
	  JMenu mfile, mcompile,mhelp;
	  JMenuItem mnew,mopen,mexit,msave,msaveas,mcopy,mstick,mfind,mreplase,mabout;
	  Container c;
	  JLabel lb;
	  JTextArea jta;
	  JScrollPane jsp;
	  FileDialog openFile;
	  FileDialog resaveFile;  
	  JFileChooser jfc;
	  boolean issave=false; 
	  String theFileName=null; 
	  String thePath=null; 
	  private String selectText="";
	  private FileDialog fd=new FileDialog(this);
	  private void init(){
		    c=this.getContentPane();
			c.setLayout(new BorderLayout());
			mb=new JMenuBar();
			mfile=new JMenu("文件");
			mcompile=new JMenu("编辑");
			mhelp=new JMenu("帮助");
			mb.add(mfile);mb.add(mcompile);mb.add(mhelp);
			mnew=new JMenuItem("新建");
			mopen=new JMenuItem("打开");
			msave=new JMenuItem(" 保存");
			msaveas=new JMenuItem(" 另保存");
			mexit=new JMenuItem("退出");
			mfile.add(mnew);mfile.add(mopen);mfile.add(msave);mfile.add(msaveas);        mfile.add(mexit);
			mcopy=new JMenuItem("复制");
			mstick=new JMenuItem("粘贴");
			mfind=new JMenuItem("查找");
			mreplase=new JMenuItem("替换");
			mcompile.add(mcopy);mcompile.add(mstick);mcompile.add(mfind);mcompile.add(mreplase);
			mabout=new JMenuItem("关于");
			mhelp.add(mabout);
			jta=new JTextArea();
		    jsp=new JScrollPane(jta);
			c.add(mb, BorderLayout.NORTH);
			c.add(jsp,BorderLayout.CENTER);
        //新建选项的监听器
        mnew.addActionListener(new ActionListener(){
        	public void actionPerformed(ActionEvent e){
        		mnew();
        	}
        });
        //open的监听器
		 mopen.addActionListener(new ActionListener(){
			 public void actionPerformed(ActionEvent e){
				 ShiYan1 sy=new ShiYan1("文本");
				 openFile=new FileDialog(sy,"打开",FileDialog.LOAD);   
				 openFile.setVisible(true);  
				 String path=openFile.getDirectory();  //获取路径
				 String fileName=openFile.getFile();    //获取文件名
				 theFileName=fileName;
				 thePath=path;
				 if(path!=null&&fileName!=null){
					 File file=new File(path,fileName);
					 try {
						BufferedReader br=new BufferedReader(new FileReader(file));
						jta.setText("");
						String lineText=br.readLine();
					    while(lineText!=null){
							jta.append(lineText+"\n");
							lineText=br.readLine();
						}
						setTitle(fileName);
						br.close();
						issave=true;
					} catch (FileNotFoundException e1) {
						JOptionPane.showMessageDialog(null, "文件无法打开", "提示", JOptionPane.INFORMATION_MESSAGE);
					}catch (IOException e1) {
						 JOptionPane.showMessageDialog(null, "文件无法打开", "提示", JOptionPane.INFORMATION_MESSAGE);
					}
				 }
				 
				 
			 }
		 });
		 msave.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e){
	        		if(issave==false){
	        			ShiYan1 sy=new ShiYan1("文本");
	        			resaveFile=new FileDialog(sy,"打开",FileDialog.SAVE);   
	        			resaveFile.setVisible(true);  
	        			String path=resaveFile.getDirectory();  //获取路径
	        			String fileName=resaveFile.getFile();    //获取文件名
	        			theFileName=fileName;
	        			thePath=path;
	        			 if(path!=null&&fileName!=null){
	        				 File file=new File(path,fileName);
	        				 BufferedWriter br;
	        				try {
	        					br = new BufferedWriter(new FileWriter(file));
	        					String text=jta.getText();
	        					br.write(text);
	        					br.close();
	        					issave=true;
	        				} catch (IOException e1) {
	        					 JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
	        				}		
	        			 }
	        		}
	        		else{
	        			File file=new File(thePath,theFileName);
	        			 BufferedWriter br;
	        			try {
	        				br = new BufferedWriter(new FileWriter(file));
	        				String text=jta.getText();
	        				br.write(text);
	        				br.close();
	        			} catch (IOException e1) {
	        				 JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
	        			}		
	        		}	
	        	}
	        });
             //另存为的监听器
		msaveas.addActionListener(new ActionListener(){
	        	public void actionPerformed(ActionEvent e){
	        		resave();
	        	}
	        });
         //exit选项的监听器        
		mexit.addActionListener( new ActionListener(){ ///退出程序
		    public void actionPerformed(ActionEvent e){
		        System.exit(0);
		       }
		      });
		mcopy.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent event){
						Object selectText=jta.getSelectedText();
					}
				});
		mfind.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent event){
				JPanel swapPanel=new JPanel();
				JLabel seekLabel=new JLabel("要查找的内容");
				JTextField inputText=new JTextField(20);
				swapPanel.add(seekLabel);
				swapPanel.add(inputText);
				JOptionPane.showMessageDialog(null ,swapPanel);
				String text =jta.getText();
				int fromIndex=jta.getCaretPosition();
				int lastfromindex=text.indexOf(inputText.getText(),fromIndex);
				jta.setCaretPosition(lastfromindex);
				jta.moveCaretPosition(lastfromindex+inputText.getText().length());
			}
		}
		);
		mreplase.addActionListener(
				new ActionListener(){
					public void actionPerformed(ActionEvent event){
						JPanel swapPanel=new JPanel();
						JLabel lookupLabel=new JLabel("要替换的内容");
						JTextField inputText=new JTextField(10);
						JLabel swapLabel=new JLabel("替换为:");
						JTextField changetoText=new JTextField(10);
						swapPanel.add(lookupLabel);
						swapPanel.add(inputText);
						swapPanel.add(swapLabel);
						swapPanel.add(changetoText);
						JOptionPane.showMessageDialog(null, swapPanel);
						String text=jta.getText();
						String changeText=text.replaceFirst(inputText.getText(),changetoText.getText());
						jta.setText(changeText);
					}
				}
		);
		
		 mstick.addActionListener(
					new ActionListener(){
						public void actionPerformed(ActionEvent event)	{
							int position =jta.getCaretPosition();
							jta.insert(selectText, position);
						}
							}
						);		
				
		mabout.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				JOptionPane.showMessageDialog(null,"\n作者:禚先林"+"\n\n"+"此文本由我编辑,如有疑问请致电:183661851**", getTitle(),JOptionPane.INFORMATION_MESSAGE);
			}
		});
  
  }
  
  public void mnew(){
	  ShiYan1 sy=new ShiYan1("文本");
  }
 public void resave(){
	  ShiYan1 sy=new ShiYan1("文本");
		resaveFile=new FileDialog(sy,"打开",FileDialog.SAVE);   
		resaveFile.setVisible(true);  
		String path=resaveFile.getDirectory();  //获取路径
		String fileName=resaveFile.getFile();    //获取文件名
		theFileName=fileName;
		thePath=path;
		 if(path!=null&&fileName!=null){
			 File file=new File(path,fileName);
			 BufferedWriter br;
			try {
				br = new BufferedWriter(new FileWriter(file));
				String text=jta.getText();
				br.write(text);
				br.close();
				issave=true;
			} catch (IOException e1) {
				 JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
			}		
		 }
	}
	/*public void save(){
		 File file=new File(thePath,theFileName);
		 BufferedWriter br;
		try {
			br = new BufferedWriter(new FileWriter(file));
			String text=jta.getText();
			br.write(text);
			br.close();
		} catch (IOException e1) {
			 JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
		}		
	}*/
 
  public  ShiYan1(String title){
	  super(title);
	  init();
  }
  
  public static void main(String []args){
	  ShiYan1 sy=new ShiYan1("文本软件");
	 sy.setSize(500,350);
	 sy.setVisible(true);
  }
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java多功能文本编辑器代码是一种用Java语言编写的程序,旨在为用户提供丰富的文本编辑功能。该编辑器具有许多功能,包括但不限于创建、打开、保存文本文件,复制、粘贴、剪切文本内容,查找和替换文本,插入和删除文本行等。此外,它还支持多种编程语言的语法高亮显示和自动缩进功能,使编写和编辑代码更加方便。 在编写这个多功能文本编辑器代码时,我们首先创建了一个主界面,包括菜单栏、工具栏和编辑区域。在菜单栏中,我们添加了文件、编辑、格式等多个功能菜单,提供了各种文本编辑所需的操作和选项。在工具栏中,我们添加了常用的快捷按钮,如新建、打开、保存等,方便用户快速执行操作。 编辑区域是用户进行文本编辑和操作的主要区域,我们通过使用Java的Swing组件来实现这一功能,包括文本框、滚动条等。在代码中,我们通过监听器来响应用户的操作,例如当用户点击保存按钮时,程序将会弹出文件选择对话框,用户选择保存的文件路径后,程序将会将编辑区域内的文本内容保存到所选路径下的文本文件中。 此外,我们还通过正则表达式和字符串处理等技术实现了文本的查找和替换功能,以及代码的语法高亮显示功能。通过这些功能的结合,我们成功实现了一个功能强大、易用的多功能文本编辑器,为用户提供了很好的编辑体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值