




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录一 题目内容及要求*4二 设计思路*4三 具体实现*6四 运行调试与分析讨论*15五 设计体会与小结*22六 参考文献*23一题目内容及要求Java文档编辑器是一个允许修改DefaultStyledDocument对象的应用程序。这些对象用于管理Swing文本组件(例如JTextPane和JTextArea)的内容。JTextPane用于显示DefaultStyledDocument的内容。通过改变与DefaultStyledDocument相关联的Style对象,能够改变 DefaultStyledDocument在 JTextPane中的显示方式。此应用程序也能够将DefaultStyledDocument存储到磁盘上和读入以前存储的DefaultStyledDocument。读、写、操纵DefaultStyledDocument的所有选项都可以通过使用菜单项来实现。当这些菜单项被选中时,它们生成事件。使用ActionListener, ItemListener, UndoableEditListener和MenuDragMouseListener对象来处理这些事件。二设计思路Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。 文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。总程序流程图如下总体设计图三具体实现类设计:TextEditorFrame /主窗体初始化JMenu /菜单的定义initTextPane /面板初始化initMenu /菜单的初始化ActionListener action /事件处理saveFile /保存文件initAboutDialog /关于对话框initToolBar /工具栏class JSplashWindowEx extends JWindow implements Runnable/启动屏功能实现:1.主窗体初始化功能TextEditorFrame() initTextPane(); initMenu(); initAboutDialog(); initToolBar();2.面板初始化功能void initTextPane() setFont(new Font(Times New Roman,Font.PLAIN,12); getContentPane().add( new JScrollPane(text);3.菜单初始化功能void initMenu() for(int i=0;imenus.length;i+) menubar.add(menusi); for(int j=0;jmenuitemsi.length;j+) menusi.add(menuitemsij); menuitemsij.addActionListener(action); this.setJMenuBar(menubar); 4. 入口函数 public的实现class TextEditorApp public static void main( String args) TextEditorFrame f = new TextEditorFrame();try Thread.sleep(3000); catch (Exception ex) ex.printStackTrace(); f.setTitle( Java文档编辑器 (项目管理2班 徐文源 学号:20062110010526)); f.setSize(700,500); f.show(); 源程序代码如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import .*;class TextEditorFrame extends JFrame File file = null; Color color = Color.black; GraphicsEnvironment getFont=GraphicsEnvironment.getLocalGraphicsEnvironment(); Font fonts = getFont.getAllFonts(); JTextPane text = new JTextPane(); JFileChooser filechooser = new JFileChooser(); JColorChooser colorchooser = new JColorChooser(); JDialog about = new JDialog(this); JMenuBar menubar = new JMenuBar(); /主窗体初始化 TextEditorFrame() initTextPane(); initMenu(); initAboutDialog(); initToolBar(); /面板初始化 void initTextPane() setFont(new Font(Times New Roman,Font.PLAIN,12); getContentPane().add( new JScrollPane(text); /菜单的定义 JMenu menus= new JMenu new JMenu(文件), new JMenu(编辑),new JMenu(外联工具), new JMenu(版权), ; JMenuItem menuitems =new JMenuItem new JMenuItem(新建), new JMenuItem(打开.), new JMenuItem(保存.), new JMenuItem(退出) , new JMenuItem(复制), new JMenuItem(剪切), new JMenuItem(黏贴), new JMenuItem(全选), new JMenuItem(选色.) , new JMenuItem(系统记事本) , new JMenuItem(版权) ; /菜单的初始化 void initMenu() for(int i=0;imenus.length;i+) menubar.add(menusi); for(int j=0;jmenuitemsi.length;j+) menusi.add(menuitemsij); menuitemsij.addActionListener(action); this.setJMenuBar(menubar); /事件处理 ActionListener action = new ActionListener() public void actionPerformed(ActionEvent e) JMenuItem mi = (JMenuItem)e.getSource(); String id = mi.getText(); if(id.equals(新建) text.setText(); file = null; else if(id.equals(打开.) if(file != null) filechooser.setSelectedFile(file);int returnVal=filechooser.showOpenDialog(TextEditorFrame.this); if(returnVal = JFileChooser.APPROVE_OPTION) file = filechooser.getSelectedFile(); openFile(); else if(id.equals(保存.) if(file != null) filechooser.setSelectedFile(file); int returnVal= filechooser.showSaveDialog(TextEditorFrame.this); if(returnVal = JFileChooser.APPROVE_OPTION) file = filechooser.getSelectedFile(); saveFile(); else if(id.equals(退出) System.exit(0); else if(id.equals(剪切) text.cut(); else if(id.equals(复制) text.copy(); else if(id.equals(黏贴) text.paste(); else if(id.equals(全选) text.selectAll(); else if(id.equals(选色.) color=JColorChooser.showDialog(TextEditorFrame.this,color); text.setForeground(color);else if(id.equals(系统记事本)tryString command = notepad.exe;Process child = Runtime.getRuntime().exec(command);catch (IOException ex) else if(id.equals(版权) about.setSize(350,250); about.show(); ;/保存文件 void saveFile() try FileWriter fw = new FileWriter(file); fw.write(text.getText(); fw.close(); catch(Exception e) e.printStackTrace(); /打开文件 void openFile() try FileReader fr = new FileReader(file); int len = (int) file.length(); char buffer = new charlen; fr.read(buffer,0,len); fr.close(); text.setText(new String(buffer); catch(Exception e) e.printStackTrace(); /关于对话框 void initAboutDialog() about.setTitle(关于版权.徐文源 06项2 ); about.getContentPane().setBackground(Color.green ); about.getContentPane().add(new JLabel(06项目管理2班 徐文源:祝严丽平老师工作顺心,生活愉快); about.setModal(true); JToolBar toolbar = new JToolBar(); JButton buttons = new JButton new JButton(,new ImageIcon(copy.jpg), new JButton(,new ImageIcon(cut.jpg), new JButton(,new ImageIcon(paste.jpg),new JButton(,new ImageIcon(MS1.jpg),new JButton(,new ImageIcon(MS2.jpg), ;/工具栏 void initToolBar() for(int i=0; ibuttons.length;i+) toolbar.add(buttonsi); buttons0.setToolTipText(复制); buttons0.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) text.copy(); ); buttons1.setToolTipText(剪切); buttons1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) text.cut(); ); buttons2.setToolTipText(黏贴); buttons2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) text.paste(); );buttons3.setToolTipText(系统记事本); buttons3.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) tryString command = notepad.exe;Process child = Runtime.getRuntime().exec(command);catch (IOException ex) ); this.getContentPane().add(toolbar,BorderLayout.NORTH); /入口函数 public class TextEditorApp public static void main( String args) TextEditorFrame f = new TextEditorFrame();try Thread.sleep(3000); catch (Exception ex) ex.printStackTrace(); f.setTitle( Java文档编辑器 (项目管理2班 徐文源 学号:20062110010526)); f.setSize(700,500); f.show(); 该程序运行的界面如下四运行调试与分析讨论屏幕截图如下:1.新建一个文件,在文档中进行编辑2.保存该文件3.打开保存的文件4.实现文档的复制功能5.全部选定文档内容6.实现选色功能7.查看选色效果8.创建系统记事本分析运行结果:通过设定一个文档编辑器,可以实现新建文件、编辑文件、保存文件及选色等多种功能。改进想法:为文档编辑器设立版权属性具体实现如下: void initAboutDialog() about.setTitle(关于版权.徐文源 06项2 ); about.getContentPane().setBackground(Color.green ); about.getContentPane().add(new JLabel(06项目管理2班 徐文源:祝严丽平老师工作顺心,生活愉快); about.setModal(true); JToolBar toolbar = new JToolBar(); JButton buttons = new JButton new JButton(,new ImageIcon(copy.jpg), new JButton(,new ImageIcon(cut.jpg), new JButton(,new ImageIcon(paste.jpg),new JButton(,new ImageIcon(MS1.jpg),new JButton(,new ImageIcon(MS2.jpg),;截图如下五设计体会与小结作为一名软件工程专业(项目管理)大二的学生,我觉得能做类似的课程设计是十分有意义,而且是十分必要的。在已度过的大二的时间里我们大多数接触的是学科基础课和专业基础课。我们在课堂上掌握的仅仅是基础课的理论面,如何去锻炼我们的实践面?如何把我们所学到的专业基础理论知识用到实践中去呢?我想做类似的课程设计就为我们提供了良好的实践平台。在做本次课程设计的过程中,我感触最深的当数查阅大量的书籍了。为了让自己的设计更加完善,更加符合编程标准,一次次翻阅书籍是十分必要的,同时也是必不可少的。我们是在作课程设计,但我们不是艺术家。他们可以抛开实际,尽情在幻想的世界里翱翔,我们是工程师,一切都要有据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人工智能+智慧城市规划系统布局研究报告
- 集体林地承包的合同
- 酒吧活动八一策划方案
- 餐厅六一儿童节活动方案
- 餐厅针对小学活动方案
- 金融机构间债券回购合同变更及利率调整协议
- 体育产业合伙人股份及赛事运营合同样本
- 杭州智能交通项目股权转让及技术研发合同
- 绿色生态公园景观设计与施工总承包合同
- 民族文化村租赁合同协议含民族风情展示与文化交流
- 2025年《土地管理法》考试试题及答案解析
- 2025至2030年中国机织服装市场现状分析及前景预测报告
- 妇幼信息安全课件
- 《测绘基础》课件(共八个任务)
- 物业轮岗活动方案
- 医院医疗服务培训
- 中国大麻酚油(CBD油)行业发展监测及投资战略研究报告
- 《工业机器人技术与应用》高职人工智能技术应用专业全套教学课件
- 中医院依法执业管理制度
- 广西b证继续教育考试试题及答案
- 2025年新高考1卷(新课标Ⅰ卷)语文试卷(含答案)
评论
0/150
提交评论