介绍
这是一个我一年多前写的一个小程序,因为前段时间时间电脑出来了点问题,担心以后也找不回来,所以放到博客上,并且和大家分享。这是一个用 java语言去模仿WIN10自带的文本编辑器,实现了基本的文本编辑器的功能。在写文本编辑器的过程有借鉴过一些文章,如果有侵犯到你的利益,请联系我。
开发环境
这里我用的是IDEA,主要用了java的swing来实现界面化。
运行时的截图
这是打开系统文件
保存文件和打开文件是差不多的,这里就不演示了
编辑文本
这是编辑文本的功能,包括复制,粘贴和剪切
核心代码
这里只给大家贴出比较核心的代码,完整代码的链接文末
FileManage类
import java.io.*;
/**
* 该类是文件管理类,负责文件的读取和保存
*/
public class FileManage {
/**
*读取文件内容,以字符串的形式返回
*/
public String read(File file) {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream(file)));
int len = (int) file.length();
char[] buffer = new char[len];
br.read(buffer, 0, len);
br.close();
return new String(buffer);
}catch(Exception e) {
e.printStackTrace();
}
return null;
}
/**
*将写在编辑器里的内容保存在相应的文件里
*/
public void save(File file, String text) {
try {
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream(file)));
bw.write(text);
bw.close();
}catch(Exception ex) {
ex.printStackTrace();
}
}
}
界面类
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
@SuppressWarnings({"serial", "unused"})
public class View extends JFrame {
File file = null;
Color color = Color.black;
FileManage fileManage = null;
public View(FileManage fileManage) {
this.fileManage = fileManage;
Menu();
Panel();
AboutDialog();
}
//制作一个可以滑动的文本框
JTextPane text = new JTextPane();
private void Panel() {
getContentPane().add(new JScrollPane(text));
}
JMenuBar menubar = new JMenuBar();
JFileChooser filechooser = new JFileChooser();
JDialog about = new JDialog();
JMenu[] menus = new JMenu[]{
new JMenu("文件"),
new JMenu("编辑"),
new JMenu("帮助"),
new JMenu("退出"),
};
JMenuItem[][] menuitems = new JMenuItem[][]{
{
new JMenuItem("打开"),
new JMenuItem("保存"),
},
{
new JMenuItem("复制"),
new JMenuItem("剪切"),
new JMenuItem("粘贴"),
},
{
new JMenuItem("关于"),
},
{
new JMenuItem("退出"),
},
};
/**
*建造菜单,这是一个二级菜单
*/
void Menu() {
for (int i = 0; i < menus.length; i++) {
menubar.add(menus[i]);
for (int j = 0; j < menuitems[i].length; j++) {
menus[i].add(menuitems[i][j]);
menuitems[i][j].addActionListener(action);
}
}
this.setJMenuBar(menubar);
}
ActionListener action = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JMenuItem mi = (JMenuItem) e.getSource();
String id = mi.getText();
if ("打开".equals(id)) {
filechooser.setDialogTitle("打开文件");
if (file != null) {
filechooser.setSelectedFile(file);
}
int returnVal = filechooser.showOpenDialog(
View.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
openFile();
}
/*第二种方法打开文件选择框
filechooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
filechooser.showDialog(new JLabel(), "打开");
if(file.isDirectory()){
System.out.println("文件夹:"+file.getAbsolutePath());
}else if(file.isFile()){
System.out.println("文件:"+file.getAbsolutePath());
}
System.out.println(filechooser.getSelectedFile().getName());
*/
} else if ("保存".equals(id)) {
filechooser.setDialogTitle("保存文件");
if (file != null) {
filechooser.setSelectedFile(file);
}
int returnVal = filechooser.showOpenDialog(
View.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
file = filechooser.getSelectedFile();
saveFile();
}
} else if ("退出".equals(id)) {
System.exit(0);
} else if ("剪切".equals(id)) {
text.cut();
} else if ("复制".equals(id)) {
text.copy();
} else if ("粘贴".equals(id)) {
text.paste();
} else if ("关于".equals(id)) {
AboutDialog();
about.setSize(200, 100);
about.setVisible(true);
}
}
};
void openFile() {
String content = fileManage.read(file);
text.setText(content);
}
void saveFile() {
String content = text.getText();
fileManage.save(file, content);
}
void AboutDialog(){
about.getContentPane().add(new JLabel("https://www.microsoft.com/zh-cn/"));
about.setModal(true);
about.setSize(100, 50);
}
}
完整代码链接
github: 简易文本编辑器.