用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe’.Read of address xxxxxx

    Navicat:Access violation at address xxxxxxxxx in module ‘navicat.exe’.Read of address xxxxxx在navicat中如果报了这个错误,则表示内存越界,需要重新注册windows的动态链接库;解决方案:打开cmd;在命令行中输入for%1in(%windir%\system32\*.dll)doregsvr32.exe/s%1回车运行;等待动态链接库刷新完成,重启mysql和navicat即可。…

    2022年8月22日
    8
  • 心形函数的几种表达式怎么求_心形曲线函数4种表达式

    心形函数的几种表达式怎么求_心形曲线函数4种表达式用两个函数表示:f(x)=sqrt(1-(abs(x)-1)^2)h(x)=-2*sqrt(1-0.5*abs(x))也可以根据图中的q(x)画出心形的内部:q(x)=(f(x)-h(x))/2*cos(200*x)+(f(x)+h(x))/2用一个函数表示,我拟合了很久才画出来的:f(x)=(0.64*sqrt(abs(x))-0.8+1.2^abs(x)*cos(200*x))*sqrt(cos(x))定义域:-pi/2<=x<=pi/2我个人觉得要比

    2022年10月9日
    5
  • 开源分布式文件存储 Minio

    开源分布式文件存储 MinioSpringBoot轻松整合Minio

    2022年6月5日
    46
  • 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程

    移动机械硬盘测试软件,硬盘检测工具HDTune使用教程硬盘是我们计算机的重要部件之一,硬盘故障直接导致我们无法正常使用,读取数据等,而硬盘检测工具也有不少。HDTune是一款专业的硬盘检测工具,能够全面的检测硬盘的传输速度、温度以及健康状况等。很多用户可能并不知道HDTune怎么用,对此,小编特意去整理了一篇使用教程,分享出来给大家介绍HDTune怎么用。硬盘检测工具HDTune怎么用?1、HDTune使用方法很简单,打开HDTune硬盘检测工具后我…

    2022年7月13日
    38
  • mac系统安装pycharm_mac下载python3

    mac系统安装pycharm_mac下载python3简介pycharm是一款针对python开发的优秀的IDE,以下是针对其在mac上的开发配置使用安装下载链接双击安装并打开应用修改主题pycharm默认的主题并不好看,不过也提供了一些其他的选择,这里我们选择Dacula的主体,设置的路径是Preference->Appearence&Behavior->Appearence效果如下python环境配置py开发当然是…

    2022年8月28日
    6
  • 手把手教你搭建Android开发环境

    手把手教你搭建Android开发环境搭建开发环境,是学习一门技术的开始。参照网上的教程,整理了一下。进行Android开发应用开发时,首先需要有JDK和AndroidSDK的支持,还需要开发工具。在AndriodStudio2.2开始,安装AndroidStudio时,会自动安装JDK和AndroidSDK。下载网址:https://developer.android.google.cn/studio/一、进入网址,点击下载安卓工作室(原英文版,翻译后的界面了)二、点击下载后,出现协议界面,勾选同意,下载。三、双击刚

    2022年7月23日
    13

发表回复

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

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