用Java实现文本编辑器

用Java实现文本编辑器源码里有注释:importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjavax.swing.*;importjavax.swing.text.*;//简单的文本编辑器publicclassEditorextendsJFrame{ publicJTextPanetextPane=new…

大家好,又见面了,我是你们的朋友全栈君。

源码里有注释:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.*;

//简单的文本编辑器

public class Editor extends JFrame {
	public JTextPane textPane = new JTextPane(); //文本窗格d,编辑窗口
	public JFileChooser filechooser = new JFileChooser(); //文件选择器

	public Editor()
	{
		super("简记");
		
		Action[] actions=			//菜单项的各种功能
			{
					new NewAction(),
					new OpenAction(),
					new SaveAction(),
					new CutAction(),
					new CopyAction(),
					new PasteAction(),
					new AboutAction(),
					new ExitAction(),
					new HelpAction()
			};
		setJMenuBar(createJMenuBar(actions));		//根据actions创建菜单栏
		Container container=getContentPane();		
		container.add(textPane, BorderLayout.CENTER);
		
		setSize(1300,1500);
		setVisible(true);
	//	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	private JMenuBar createJMenuBar(Action[] actions)	//创建菜单栏的函数
	{
		JMenuBar menubar=new JMenuBar();
		JMenu menuFile=new JMenu("文件(F)");
		JMenu menuEdit=new JMenu("编辑(E)");
		JMenu menuAbout=new JMenu("帮助(H)");
		menuFile.add(new JMenuItem(actions[0]));
		menuFile.add(new JMenuItem(actions[1]));
		menuFile.add(new JMenuItem(actions[2]));
		menuFile.add(new JMenuItem(actions[7]));
		menuEdit.add(new JMenuItem(actions[3]));
		menuEdit.add(new JMenuItem(actions[4]));
		menuEdit.add(new JMenuItem(actions[5]));
		menuAbout.add(new JMenuItem(actions[6]));
		menuAbout.add(new JMenuItem(actions[8]));
		menubar.add(menuFile);
		menubar.add(menuEdit);
		menubar.add(menuAbout);
		return menubar;
	}

	class NewAction extends AbstractAction		//新建
	{
		public NewAction()
		{
			super("新建(N)     Ctrl+N");
		}
		public void actionPerformed(ActionEvent e)
		{
			textPane.setDocument(new DefaultStyledDocument());
		}
	}

	class OpenAction extends AbstractAction		//打开
	{
		public OpenAction()
		{
			super("打开(O)     Ctrl+O");
		}
		public void actionPerformed(ActionEvent e)
		{
			int i=filechooser.showOpenDialog(Editor.this);			//显示打开文件对话框
			if(i==JFileChooser.APPROVE_OPTION)			//点击对话框打开选项
			{
				File f=filechooser.getSelectedFile();	//得到选择的文件
				try
				{
					InputStream is=new FileInputStream(f);
					textPane.read(is, "d");
				}
				catch(Exception ex)
				{
					ex.printStackTrace();
				}
			}
		}
	}

	class SaveAction extends AbstractAction		//保存
	{
		public SaveAction()
		{
			super("保存(S)     Ctrl+S");
		}
		public void actionPerformed(ActionEvent e)
		{
			int i=filechooser.showSaveDialog(Editor.this);
			if(i==JFileChooser.APPROVE_OPTION)
			{
				File f=filechooser.getSelectedFile();
				try
				{
					FileOutputStream out=new FileOutputStream(f);
					out.write(textPane.getText().getBytes());
				}
				catch(Exception ex)
				{
					ex.printStackTrace();
				}
			}
		}
	}

	class ExitAction extends AbstractAction		//退出
	{
		public ExitAction()
		{
			super("退出(X)");
		}
		public void actionPerformed(ActionEvent e)
		{
			dispose();
		}
	}

	class CutAction extends AbstractAction		//剪切
	{
		public CutAction()
		{
			super("剪切(T)     Ctrl+X");
		}
		public void actionPerformed(ActionEvent e)
		{
			textPane.cut();
		}
	}
	
	class CopyAction extends AbstractAction		//复制
	{
		public CopyAction()
		{
			super("复制(C)     Ctrl+C");
		}
		public void actionPerformed(ActionEvent e)
		{
			textPane.copy();
		}
	}

	class PasteAction extends AbstractAction		//粘贴
	{
		public PasteAction()
		{
			super("粘贴(P)     Ctrl+V");
		}
		public void actionPerformed(ActionEvent e)
		{
			textPane.paste();
		}
	}

	class AboutAction extends AbstractAction
	{
		public AboutAction()
		{
			super("关于简记(A)");
		}
		public void actionPerformed(ActionEvent e)
		{
			JOptionPane.showMessageDialog(Editor.this,"实现了记事本的一些基本功能","关于",JOptionPane.PLAIN_MESSAGE);
		}
	}
	
	class HelpAction extends AbstractAction
	{
		public HelpAction()
		{
			super("联系开发者");
		}
		public void actionPerformed(ActionEvent e)
		{
			JOptionPane.showMessageDialog(Editor.this,"cpeng2424@gmail.com","开发者邮箱",JOptionPane.PLAIN_MESSAGE);
		}
	}
	
	public static void main(String[] args)
	{
		new Editor();
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/136299.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm下的多个python版本共存(一)

    pycharm下的多个python版本共存(一)

    2021年10月22日
    62
  • java程序设计图书管理系统源码(java图书管理系统设计报告)

    图书管理系统需实现的功能如下:(1)用户管理:包括用户的注册于登录。(2)图书管理:包括录入、查询、修改和删除图书信息。(3)借书:包括借阅图书和查看借书记录。(4)还书:包括还书和查看还书记录。(5)为了保证系统安全,进入系统时,对用户登录的密码进行加密与解密。源码、课程设计报告、数据库表图的百度网盘链接:https://pan.baidu.com/s…

    2022年4月12日
    84
  • CUDA deb 安装

    CUDA deb 安装1、CUDA下载https://developer.nvidia.com/cuda-toolkit-archive2、选择对应版本deb安装sudodpkg-icuda-repo-ubuntu1804-10-0-local-10.0.130-410.48_1.0-1_amd64.debsudoapt-keyadd/var/cuda-repo-<version&gt…

    2022年6月4日
    66
  • 【数据结构与算法】深入浅出递归和迭代的通用转换思想[通俗易懂]

    【数据结构与算法】深入浅出递归和迭代的通用转换思想[通俗易懂]递归和递归的深入浅出一般来说,能用迭代的地方就不要用递归!理论上讲,所有的递归和迭代之间都能相互转换!(一)何为迭代?首先我们来看下面这段简单的代码:intsum(intn){intsum=0;for(inti=1;i<=n;i++)sum+=n;//求解1~n的和returnsum;}从上述例子中,从1一直加到n,每一次的和都

    2022年6月5日
    38
  • 树莓派接口定义「建议收藏」

    树莓派接口定义「建议收藏」树莓派接口定义GPIODSI显示端口CSI摄像头接口MicroSD插槽HDMI/USB/Network接口MicroUSB电源接口/3.5mm音频输出接口GPIOGPIO(通用输入/输出接口)是树莓派重要的功能接口,它相当于Arduino上的GPIO引脚。这些引脚可以用于程序中读取电路中的电信号,也可以为控制电路提供电信号。使用GPIO时要非常小心,因为GPIO容易损坏,它使用…

    2022年6月1日
    57
  • http状态码502与504区别

    http状态码502与504区别502badgatewa 顾名思义网关错误后端服务器 tomcat 没有起来 应用服务的问题 前提是接入层 7 层正常的情况下 应用服务问题一种是应用本身问题 另一种是因为依赖服务问题比如依赖服务 RT 高 依赖的服务有大的读取 mysql 慢查 http 等 以至于调用方超过超时 read 时间 服务集群压力大时 也会出现 502 超时 502 理解为不可响应或响应不过来 其实还是不可响应 504

    2025年9月29日
    2

发表回复

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

关注全栈程序员社区公众号