最近,用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();
}
本文代码还有许多不完善的地方