废话不多说直接上代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.plaf.FontUIResource;
import javax.swing.text.Document;
import java.io.*;
import java.util.Enumeration;public class JTextAreaTester extends JFrame implements ActionListener {private JButton btnOpen, btnSave, btnCopy, btnPaste, btnCut, btnSelectAll, btnClearAll;private JTextArea ta;private boolean isTextModified; // 文本被编辑的标记private String file = ""; // 文件名private final static String APP_NAME = "简易文本编辑器";public JTextAreaTester() {super(APP_NAME);this.setSize(500, 300);this.setDefaultCloseOperation(EXIT_ON_CLOSE);ta = new JTextArea();ta.setLineWrap(true); // 自动换行ta.setFont(new Font("宋体", Font.PLAIN, 16));JScrollPane sp = new JScrollPane(ta); // 根据需要自动显示滚动条JButton btnOpen = new JButton("打开文件");btnOpen.setActionCommand("打开文件");JButton btnSave = new JButton("保存文件");btnSave.setActionCommand("保存文件");JButton btnCopy = new JButton("复制");btnCopy.setActionCommand("复制");JButton btnPaste = new JButton("粘贴");btnPaste.setActionCommand("粘贴");JButton btnCut = new JButton("剪切");btnCut.setActionCommand("剪切");JButton btnSelectAll = new JButton("全选");btnSelectAll.setActionCommand("全选");JButton btnClearAll = new JButton("清空");btnClearAll.setActionCommand("清空");// 为组件注册动作事件监听器btnOpen.addActionListener(this);btnSave.addActionListener(this);btnPaste.addActionListener(this);btnSelectAll.addActionListener(this);JPanel panel = new JPanel(); // 按钮放置在一个面板内FlowLayout layout = (FlowLayout) panel.getLayout();layout.setHgap(2);panel.add(btnOpen);panel.add(btnSave);panel.add(btnCopy);panel.add(btnPaste);panel.add(btnCut);panel.add(btnSelectAll);panel.add(btnClearAll);this.add(sp, "Center");this.add(panel, "South");// 给文本框的文档添加文档监听器Document doc = ta.getDocument();doc.addDocumentListener(new DocumentListener() {public void changedUpdate(DocumentEvent e) {}public void insertUpdate(DocumentEvent e) {setTitle(APP_NAME + "-" + file + "(*)"); // 设置修改标记isTextModified = true; // 设置修改标记}public void removeUpdate(DocumentEvent e) {setTitle(APP_NAME + "-" + file + "(*)"); // 设置修改标记isTextModified = true; // 设置修改标记}});}public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();if (cmd.equals("打开文件")) { // 打开文本文件StringBuffer sb = new StringBuffer("");try {BufferedReader br = new BufferedReader(new FileReader("学校简介.txt"));String str = br.readLine();while (str != null) {sb.append(str + "\n");str = br.readLine();}br.close();ta.setText(sb.toString());this.setTitle(APP_NAME + "-" + file); // 窗体标题初始化isTextModified = false; // 重置修改标记} catch (Exception e1) {ta.setText(e1.getMessage());}} else if (cmd.equals("保存文件")) { // 保存文本// TODO: 保存文件的代码this.setTitle(APP_NAME + "-" + file); // 窗体标题重置isTextModified = false; // 保存后修改} else if (cmd.equals("复制")) {ta.paste();}}// 初始化全局字体private static void initGlobalFont() {FontUIResource fontUIResource = new FontUIResource(new Font("宋体", Font.PLAIN, 14));for (Enumeration<Object> keys = UIManager.getDefaults().keys(); keys.hasMoreElements();) {Object key = keys.nextElement();Object value = UIManager.get(key);if (value instanceof FontUIResource) {UIManager.put(key, fontUIResource);}}}public static void main(String[] args) {initGlobalFont(); // 初始化全局所有字体JTextAreaTester frm = new JTextAreaTester();frm.setVisible(true);}
}


















