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


相关推荐

  • mysql解锁_mysql锁表如何解锁

    mysql解锁_mysql锁表如何解锁什么是MySQL锁表?为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。MySQL有三种锁的级别:页级、表级、行级。MyISAM和MEMORY存储引擎采用的是表级锁(table-levellocking);BDB存储引擎采用的是页面锁(page-levellocking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-levellockin…

    2022年6月3日
    33
  • 在国内怎么使用谷歌Chrome浏览器,为什么我的谷歌浏览器进去就加载失败

    在国内怎么使用谷歌Chrome浏览器,为什么我的谷歌浏览器进去就加载失败下面跟着我的步伐一起看看吧!一、当你如获至宝的在搜索框输入关键字然后按下回车,经过差不多一杯奶茶的时间加载,你看到了这张图妈耶!不会是我有下载错软件包了吧?我网掉了,没有啊?我设置不对啊?等等,你差不多猜对了,还真跟设置有点关系,我们要知道,正常情况下,国内是无法使用谷歌搜索的二、设置接着你打开设置找到搜索引擎,然后我们选择百度昂梵蒂冈这里我么输入www.baidu.com然后保存即可再次打开谷歌浏览器,这才像摸像样嘛…

    2022年7月14日
    36
  • 最简单的vue上传图片

    最简单的vue上传图片