Java写文本编辑器(简单版)

     最近,用Java写了一个文本编辑器,可以实现基本功能。

package hhh;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.undo.UndoManager;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

这一步是导入所需库。

public class Txet extends  JFrame{
	private JTextArea worked;
	private JFileChooser fileChooser;
	private JMenu fileMenu; 
	  }

声明私有变量


 
	  

	public Txet(){
		  JFrame txet = new JFrame("文本编辑器");
		  txet.setVisible(true);
		  txet.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		  txet.setSize(1600, 1000);
		  txet.setVisible(true);
		  worked=new JTextArea();
		  JScrollPane workedPane=new JScrollPane(worked);
		  fileChooser = new JFileChooser();
		  
		  JMenuBar menuBar = new JMenuBar(); 
		  JMenuItem openItem = new JMenuItem("打开");    
	      JMenuItem saveItem = new JMenuItem("保存");
	        fileMenu=new JMenu("文件");
			JMenu menu_edit = new JMenu("编辑");
			JMenu menu_help = new JMenu("帮助");
			JMenu menu_format = new JMenu("格式");
			fileMenu.add(menu_edit);
			fileMenu.add(menu_help);
			fileMenu.add(menu_format);
			fileMenu.add(openItem);
	        fileMenu.add(saveItem);
	        menuBar.add(fileMenu);
	        setJMenuBar(menuBar);
	        

添加菜单,可自行更改。


	        
	        // 注册事件监听器
	        
	        //e -> openFile() 表示一个处理事件的函数或方法。当事件被触发时,该函数会被调用,并执行 openFile() 方法来处理打开文件的操作。
	        openItem.addActionListener(e -> openFile());                   // 注册打开菜单项的点击事件监听器
	        saveItem.addActionListener(e -> saveFile());}
	        private void openFile() {
	        int returnValue = fileChooser.showOpenDialog(this);// 注册保存菜单项的点击事件监听器
	        if (returnValue == JFileChooser.APPROVE_OPTION) {//如果用户选择了打开文件的操作(returnValue == JFileChooser.APPROVE_OPTION),则继续执行打开文件的操。
	        	 File selectedFile = fileChooser.getSelectedFile();
	        	 try {
	                    BufferedReader reader = new BufferedReader(new FileReader(selectedFile));   // 创建文件读取器	详细解释:使用 BufferedReader 类来创建一个文件读取器 (reader),并将选择的文件作为参数传递给它
	                    StringBuilder content = new StringBuilder();             // 用于存储文件内容的字符串构建器	详细解释:创建一个 StringBuilder 对象 content,用于存储文件内容。通过循环读取文件中的每一行,并将其逐行添加到 content 字符串构建器中。
	                    String line;
	                    while ((line = reader.readLine()) != null) {
	                        content.append(line).append("\n");                    // 逐行读取文件内容,并添加到字符串构建器中
	                    }
	                    reader.close();                                          // 关闭文件读取器	读取文件完成后,关闭文件读取器 (reader.close())。
	                    worked.setText(content.toString());                     // 将文件内容设置到代码编辑区域中	将 content.toString() 得到的文件内容字符串设置为代码编辑区域 (codePane) 的文本,即显示文件内容在代码编辑区域中。
	                } catch (IOException e) {
	                    e.printStackTrace();
	                }
	        }
	      }
	       private void saveFile() {
	            int returnValue = fileChooser.showSaveDialog(this);{                      // 显示文件保存对话框,并获取用户的操作结果
	            if (returnValue == JFileChooser.APPROVE_OPTION) {
	                File selectedFile = fileChooser.getSelectedFile();                   // 获取用户选择的文件
	                try {
	                    FileWriter writer = new FileWriter(selectedFile);                // 创建文件写入器
	                    writer.write(worked.getText());                                 // 将代码编辑区域的内容写入文件
	                    writer.close();                                                   // 关闭文件写入器
	                } catch (IOException e) {
	                    e.printStackTrace();
	                }
	            }
	        }
	     
	
	     
	     
	        /**
	         * 保存文件操作,将代码编辑区域的内容保存到文件中。
	         */
	    
	        
	        
	  }

}

完成监听器。

最后加上初始化

public static void main(String[] args) {

new txet().init();
}

本文代码还有许多不完善的地方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值