JAVA实现简易文本编辑器设计[亲测有效]

JAVA实现简易文本编辑器设计[亲测有效]废话不多说直接上代码importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.DocumentEvent;importjavax.swing.event.DocumentListener;importjavax.swing.plaf.FontUIResource;importjavax.swing.text.Document;importjava.io.*;im

大家好,欢迎来到IT知识分享网。

废话不多说直接上代码

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);
	}
}

IT知识分享网

JAVA实现简易文本编辑器设计[亲测有效]

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/13041.html

(0)
上一篇 2023-03-04 17:00
下一篇 2023-03-06 12:59

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信