一、小组成员介绍

小组成员 介绍 主要工作
许意杰 组长 GUI设计,程序整合
尤志峰 组员 功能设计:创建菜单栏,创建工具条,新建文件命令,打开文件命令,保存命令
陈浩 组员 功能设计:退出命令,剪切命令,拷贝命令,粘贴命令,关于选项命令

二、项目架构、主要流程以及UML类图

项目架构:

主要流程:

UML图

三、程序演示

1.查找文件功能

2.实现文件的拷贝与粘贴功能

3.实现文本类的预览功能

4.实现文件的重命名功能

5.实现对某个文件夹进行统计功能

四、程序源代码

1.窗口设计

在主接口中设计一个EditorDemo容器继承自JFrame,并在其中加入菜单栏、工具栏和一个文本域控件。 
public class EditorDemo extends JFrame
JTextPane textPane = new JTextPane(); //创建文本窗格,编辑窗口
JFileChooser filechooser = new JFileChooser(); //文件选择器
setJMenuBar(createJMenuBar(actions));  //设置菜单栏
Container container = getContentPane(); //得到容器
    container.add(createJToolBar(actions), BorderLayout.NORTH); //工具栏
container.add(textPane, BorderLayout.CENTER); //增加文本窗格 

2.功能设计

在下拉菜单中加入子菜单并进行监听,分别实现对文件的操作功能。点击不同菜单项时,显示不同接口。
private JMenuBar createJMenuBar(Action[] actions)  //创建菜单栏
	JMenuBar menubar = new JMenuBar(); //实例化菜单栏
	JMenu menuFile = new JMenu("文件(F)"); //实例化菜单
  JMenu menuEdit = new JMenu("编辑(E)");
	JMenu menuFormat = new JMenu("格式(O)");
	JMenu menuFind = new JMenu("查找(V)");
	JMenu menuAbout = new JMenu("帮助(H)");
	menuFile.add(new JMenuItem(actions[0])); //增加新菜单项
	menuFile.add(new JMenuItem(actions[1]));
	menuFile.add(new JMenuItem(actions[2]));
	menuFile.addSeparator();
	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]));
	menubar.add(menuFile); //增加菜单
	menubar.add(menuEdit);
	menubar.add(menuFormat);
	menubar.add(menuFind);
	menubar.add(menuAbout);
	return menubar; //返回菜单栏

3.加入工具栏的功能键,通过工具栏实现对文本的基本操作。

Action[] actions =  //Action数组,各种操作命令
				new NewAction(),
				new OpenAction(),
				new SaveAction(),
				new CutAction(),
				new CopyAction(),
				new PasteAction(),
				new AboutAction(),
				new ExitAction(),
private JToolBar createJToolBar(Action[] actions) //创建工具条
	JToolBar toolBar = new JToolBar(); //实例化工具条	 
	JButton bt = new JButton(actions[i]); //实例化新的按钮
	toolBar.add(bt); //增加按钮到工具栏

4.对每个菜单项进行注册监听。点击不同功能键时,实现不同的操作,显示不同的窗口。

class NewAction extends AbstractAction { //实现新建文件命令功能
		public NewAction() {
			super("新建文本");}
		public void actionPerformed(ActionEvent e) {
			textPane.setDocument(new DefaultStyledDocument()); //清空文档
		}}
class OpenAction extends AbstractAction { //实现打开文件命令功能
		public OpenAction() {
			super("打开文本");}
		public void actionPerformed(ActionEvent e) {
			int i = filechooser.showOpenDialog(EditorDemo.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("保存文本");}
		public void actionPerformed(ActionEvent e) {
			int i = filechooser.showSaveDialog(EditorDemo.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("退出系统");}
		public void actionPerformed(ActionEvent e) {
			System.exit(0);  //退出程序}}
class CutAction extends AbstractAction {  //实现剪切命令
		public CutAction() {
			super("剪切");}
		public void actionPerformed(ActionEvent e) {
			textPane.cut();  //调用文本窗格的剪切命令}}
class CopyAction extends AbstractAction {  //实现拷贝命令
		public CopyAction() {
			super("拷贝");}
		public void actionPerformed(ActionEvent e) 
{textPane.copy();  //调用文本窗格的拷贝命令
class PasteAction extends AbstractAction {  //实现粘贴命令
public PasteAction() {
			super("粘贴");}
		public void actionPerformed(ActionEvent e) {
			textPane.paste();  //调用文本窗格的粘贴命令}}
class AboutAction extends AbstractAction { //关于版本命令
		public AboutAction() {
			super("版本");}
		public void actionPerformed(ActionEvent e) {
String str="简易记事本\n\n版本:1.0\n作者:许意杰,陈浩,尤志锋\n主要功能:实现简单文本编辑。";主要功能:实现简单文本编辑。 
		JOptionPane.showMessageDialog(EditorDemo.this, str); //显示软件信息
		}}
posted on 2021-01-29 08:41  给你好康的  阅读(249)  评论(0编辑  收藏  举报