一、小组成员介绍
小组成员 |
介绍 |
主要工作 |
许意杰 |
组长 |
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); //显示软件信息
}}