Java课设_文本编辑器_第1页
Java课设_文本编辑器_第2页
Java课设_文本编辑器_第3页
Java课设_文本编辑器_第4页
Java课设_文本编辑器_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录第一章 绪论1一、Java语言特点1二、Java发展前景2第二章 问题分析5一、文本编辑器的设计5二、功能、性能5三、开发环境6四、设计示意图6第三章 系统详细设计7一、文件打开与保存对话框的设计7二、调用颜色对话框的设计9三、建立Choice下拉列表实现对字体的设计10四、剪切,复制,粘贴的设计10第四章 代码实现12一、字形,字体大小部分12二、帮助中关于主题部分14第五章 测试与调试16一、调试分析16二、测试结果16第六章 总结与心得19第七章 附录20一、源代码20二、参考文献31第一章 绪论一、Java语言特点1、面向对象Java 语言是一个完全面向对象的语言,并且对软件工程

2、技术有很强分得支持:Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型:对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏:类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。2、平台无关性 严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字限,最后的目标码都是一致:的:Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行是系统,Java程序就可在任意的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。3、安全问

3、题 Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性;毁灭系统资源;消耗系统资源;挖掘系统或个人机密;骚扰正常工作的进行。4、多线程 单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情;其他大多数高级语言,包括C,C+等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持);Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序;多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作;通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实

4、现网络上的实时交互行为。5、可移植性6、分布性7、高性能(相对于其他解释型语言)8、健壮性二、Java发展前景Sun公司以及IBM、Oracle、Netscape等公司都在大力推进Java的应用。旨在提高Java运行速度的Java芯片也在紧锣密鼓地赶制当中,有人预计不久的将来,Java的代码的运行速度和C+一样快。Java在WWW应用中的地位得到肯定以后,Sun又反过来扩展Java在家电领域的应用,Java的应用有向更广阔的领域扩展的趋势。Sun公司的高层人士称“Java的潜力远远超过作为编程语言带来的好处。事实上,Java是一种新计算模式的使能技术”。看来,Java的前程不可限量。作为一种语

5、言,Java在过去十年中取得了其他任何语言都无法比拟的成绩。而在中国市场,虽然在技术上一直能和国际上保持同步,但是应用却总是略显滞后。重新反思中国Java的十年发展历程,除了赞誉与庆贺外,更有现实意义的做法是,认真考虑如何为中国Java的未来发展继续涵养水土。IDC(国际数据公司)调研报告显示,中国软件外包业近十年发展迅猛,截止去年底,各类外包企业已达3300家,合同执行额46.9亿美元。预计未来四年,中国还将迎来新一轮发展高峰,至2013年,中国将新增15000家IT企业。强势增长拉动了该行业对IT人才的需求,作为IT细分环节,JAVA以简洁、跨平台操作等优势,迅速占据了全球大量市场,未来发

6、展中,JAVA将成为IT从业者必须掌握的一门语言。有很多机构专注JAVA就业培训领域。“Java的发展如同火箭升空,当初没有人会想到它能飞这么远”,Sun总裁兼首席运营官Jonathan Schwartz曾在Java十周年庆典上这样说。“Java易得 一将难求 !”Sun大中华区软件、ISV和Java业务总监黄震认为,Java入门容易,但是精通不易。这就好像会画中国画的人不少,业余爱好者很多,但真正能够成为画家的很少。而在中国的Java人才,似乎不只是精通者不够多,真正愿意学习运用Java语言的爱好者数量也不容乐观。数据显示,目前全球Java开发者达到了450万,而在中国,这个数字只有10万不

7、到。对此,有“中国Java之父”之称的清华大学计算机系教授王克宏表示,如果真正把统计范围严格界定在“开发者”上的话(即便把像小李那样未取得认证的技术人员考虑进去),中国真正的Java开发者或许也仅有5万人左右。这与中国这个拥有13亿人口的大国地位以及Java的巨大市场潜力相比,是极其不相称的。目前,由于Sun、IBM、Oracle、BEA等国际厂商相继推出各种基于Java技术的应用服务器以及各种应用软件,带动了Java在金融、电信、制造等领域日益广泛的应用。如清华大学计算机系利用Java、XML和Web技术研制开发了多个软件平台,东方科技的Tong Web、金碟的Apusic、中创的Infor

8、web 等J2EE应用服务器及和佳ERP和宝信ERP等ERP产品,已在许多企业得到应用。由此可见,在巨大市场需求下,企业对于Java人才的渴求已经是不争的事实,正是如此,JAVA的巨大发展前景,也为IT人才的未来,铺就了更广阔的大路!第二章 问题分析面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。一、文本编辑器的设计设计一个类似于Windows

9、记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。通过这次设计,要求掌握以下内容:1、 面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用2、 类、包、接口的定义与使用3、 常用工具类与算法的实现(数组、向量、字符串、链表)4、 java.awt、javax.swing中常用标准GUI组件及相应的事件处理二、功能、性能简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够读取磁盘中现有的纯文本文

10、件,以及方便用户进行需要的编辑功能。文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能。三、开发环境软件方面:Java开发环境硬件方面:JDK软件抑或是Eclipse软件对硬件不是有很高的要求。四、设计示意图添加编辑区添加菜单添加对话框完善菜单系统建立下拉列表编辑文字建立框架实现简单帮助建立基本框架第三章 系统详细设计一、 文件打开与保存对话框的设计filedialog_save=new FileDialog(this,保存文件对话框,FileDialog.SAVE);filedialog_s

11、ave.setVisible(false);filedialog_load=new FileDialog(this,保存文件对话框,FileDialog.LOAD);filedialog_load.setVisible(false);filedialog_save.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_save.setVisible(false););filedialog_load.addWindowListener(new WindowAdapter()p

12、ublic void windowClosing(WindowEvent e)filedialog_load.setVisible(false););public void actionPerformed(ActionEvent e)if(e.getSource()=itemSave)filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null)try File file=new File(filedialog_save.getDirectory(),filedialog_save.getFile();tofile=ne

13、w FileWriter(file);out=new BufferedWriter(tofile); out.write(area.getText(),0,(area.getText().length();out.close();tofile.close();catch(IOException e1) else if(e.getSource()=itemLoad)filedialog_load.setVisible(true);area.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=new File

14、(filedialog_load.getDirectory(),filedialog_load.getFile();file_reader=new FileReader(file);in=new BufferedReader(file_reader);while(s=in.readLine()!=null)area.append(s+n);in.close();file_reader.close();catch(IOException e1) 文本编辑器的保存和打开功能的实现用文件对话框及输入输出流来完成。先建立打开和保存对话框,在public void actionPerformed(Act

15、ionEvent e)里分别用FileWriter()和FileReader()方法实现保存和打开。二、 调用颜色对话框的设计else if(e.getSource()=item5)Color newColor=JColorChooser.showDialog(this,调色板,area.getBackground();if(newColor!=null)area.setBackground(newColor);文本编辑器要实现背景功能可以用javax.swing包中的JColorChooser类的静态方法。Pubic static Color showDialog(Component,Str

16、ing title,Color initialColor),其中参数Component指定对话框所依赖的组件,即文本编辑器中的文本区area,title指定对话框的标题“调色板”,initialColor指定对话框返回的初始颜色,即对话框消失后,返回默认值。三、 建立Choice下拉列表实现对字体的设计Choice list;GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();String fontName=ge.getAvailableFontFamilyNames();public void it

17、emStateChanged(ItemEvent e)String name=list.getSelectedItem();Font f=new Font(name,Font.PLAIN,15);area.setFont(f);文本编辑器要实现对字体的设置,我选用了GraphicsEnvironment对象调用String getAvailableFontFamilyNames()方法,该方法可以获取计算机上所有可用的字体名称,并存放到字符串数组中。四、 剪切,复制,粘贴的设计public void changedUpdate(DocumentEvent e) String s=area.ge

18、tText();public void removeUpdate(DocumentEvent e)changedUpdate(e);public void insertUpdate(DocumentEvent e)changedUpdate(e);public void actionPerformed(ActionEvent e)else if(e.getSource()=item2)area.cut();else if(e.getSource()=item3)area.copy();else if(e.getSource()=item4)area.paste();文本编辑器中关于剪切,复制,

19、粘贴功能的实现我选用处理JTextArea的DocumentEvent事件,通过area.cut(),area.copy(),area.paste()方法,点击“编辑”中相应菜单项可以选择将文本区中选中的内容剪切,复制,粘贴。第四章 代码实现一、字形,字体大小部分else if(e.getSource()=item8)/设置字形(常规,倾斜,加粗)Font font=area.getFont();int style=font.getStyle();style=style0;area.setFont(new Font(,style,font.getSize();else if(e.getSour

20、ce()=item9)Font font=area.getFont();int style=font.getStyle();style=style2;area.setFont(new Font(,style,font.getSize();else if(e.getSource()=item10)Font font=area.getFont();int style=font.getStyle();style=style1;area.setFont(new Font(,style,font.getSize();else if(e.getSource()=item11) /设置字体大小Font fo

21、nt=area.getFont();int style=font.getStyle();area.setFont(new Font(font.getName(),style,12);else if(e.getSource()=item12)Font font=area.getFont();int style=font.getStyle();area.setFont(new Font(font.getName(),style,24);else if(e.getSource()=item13)Font font=area.getFont();int style=font.getStyle();ar

22、ea.setFont(new Font(font.getName(),style,36);图1文本编辑器中的菜单:二、帮助中关于主题部分else if(e.getSource()=item6)zhuti zt=new zhuti();class zhuti extends Frame implements ActionListenerButton btn;Label lab;zhuti()setLayout(null);btn=new Button(确定);lab=new Label(这是一个简单的文本编辑器!);add(btn);add(lab);btn.addActionListener(

23、this);setBounds(200,200,250,150);setVisible(true);lab.setBounds(20 ,60,220,30);lab.setFont(new Font(楷体,Font.BOLD,16);lab.setBackground(Color.cyan);btn.setBounds(100,100,50,30);btn.setBackground(Color.cyan);public void actionPerformed(ActionEvent e)if(e.getSource()=btn)dispose();对于帮助中关于主题部分的实现,我另构建了一

24、个Frame框架,主要是由一个标签及一个按钮构成,由标签输出“这是一个简单的文本编辑器!”,按钮用dispose()方法实现退出功能。图2:简单的帮助对话框:第五章 测试与调试一、调试分析1、关于打开和保存我运用了文件对话框, filedialog_save和filedialog_load以及文件输入输出流来实现,新建功能我选用了area.setText(null)方法。2、对于剪贴,粘贴,复制的实现则用public void removeUpdate(DocumentEvent e)及public void insertUpdate(DocumentEvent e)。3、背景的运用也是调用了

25、颜色对话框,需引用import javax.swing.JcolorChooser包用 Color newColor=JColorChooser.showDialog(this,调色板,area.getBackground()方法。4、至于字体功能的实现,则是先创建一个下拉列表Choice list,再实现对它的监听 list.addItemListener(this), 最后用public void itemStateChanged(ItemEvent e)方法实现,需注意的是这种方法的实现只对javax.swing包中的组件有效,对于java.awt包中的组件,系统则是采取默认的字体名称。

26、二、测试结果图1:文本编辑器的运行结果:图2:字体选择下拉列表 图3:文本编辑器文件对话框(保存文件对话框):图4:选择背景颜色对话框:第六章 总结与心得本次课程设计我选做的题目是文本编辑器的设计。 要求设计一个类似于Windows记事本(Notepad)的Java程序,可以打开、新建、保存一个文本文件,而且能对选中的文本进行各种编辑操作,如设置字体、背景、复制、粘贴。这次实验中我设计的文本编辑器可以实现打开, 新建,保存,复制,粘贴,剪贴,背景,及帮助主题这些功能.先在Window类中添加一系列组件,如Button,JtextArea,Menu等,再对相应的组件添加监听,然后在各自对应的方法

27、中来实现各自的功能。先设置了四个菜单,分别为文件,编辑,格式和帮助。 将打开, 新建,保存放入文件菜单中, 复制,粘贴,剪贴放入编辑菜单中,背景和关于主题分别在格式和帮助菜单中。通过这次的课程设计,应该说收益匪浅,因为程序都是自己写的,所以感触更深。以前有一些似懂非懂的知识点通过这次试验有了全面的了解,更重要的是得到了许多新的知识。 而且在这次试验中尝试了许多以前没有用过的方法来实现一些功能,比如对话框的使用等等。有了这次课程设计的体验,相信在以后的编程乃至学习中会从中得到一些经验。第七章 附录一、源代码import java.awt.*;import java.awt.event.*;imp

28、ort java.io.*;import javax.swing.JColorChooser;import javax.swing.*;import javax.swing.event.*;class Window extends Frame implements ActionListener,ItemListener,DocumentListenerFileDialog filedialog_save,filedialog_load;MenuBar menubar;Menu menu1,menu2,menu3,menu4,menu5,menu6;MenuItem itemSave,itemL

29、oad,item1,item2,item3,item4,item5,item6,item7,item8,item9,item10,item11,item12,item13,item14,item15;Choice list;JTextArea area;BufferedReader in;FileReader file_reader;BufferedWriter out;FileWriter tofile;JScrollPane scrollpane;Window(String s)super(s);setSize(600,400);list=new Choice();area=new JTe

30、xtArea();setVisible(true);GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();String fontName=ge.getAvailableFontFamilyNames();for(int i=0;ifontName.length;i+)list.add(fontNamei);add(list,North);add(area,Center);list.addItemListener(this);validate();menubar=new MenuBar();menu1=n

31、ew Menu(文件);menu2=new Menu(编辑);menu3=new Menu(格式);menu4=new Menu(帮助);menu5=new Menu(字形);menu6=new Menu(字体大小);itemSave=new MenuItem(保存);itemLoad=new MenuItem(打开);item1=new MenuItem(新建);item2=new MenuItem(剪切);item3=new MenuItem(复制);item4=new MenuItem(粘贴);item5=new MenuItem(背景);item6=new MenuItem(关于主题)

32、;item7=new MenuItem(退出);item8=new MenuItem(常规);item9=new MenuItem(倾斜);item10=new MenuItem(加粗);item11=new MenuItem(12);item12=new MenuItem(24);item13=new MenuItem(36);item14=new MenuItem(查找);item15-new MenuItem(替换);itemSave.addActionListener(this);itemLoad.addActionListener(this);item1.addActionListe

33、ner(this);item2.addActionListener(this);item3.addActionListener(this);item4.addActionListener(this);item5.addActionListener(this);item6.addActionListener(this);item7.addActionListener(this);item8.addActionListener(this);item9.addActionListener(this);item10.addActionListener(this);item11.addActionLis

34、tener(this);item12.addActionListener(this);item13.addActionListener(this);item14.addActionListener(this);item15.addActionListener(this);(area.getDocument().addDocumentListener(this);menu1.add(item1);menu1.addSeparator();menu1.add(itemSave);menu1.addSeparator();menu1.add(itemLoad);menu1.addSeparator(

35、);menu1.add(item7);menu2.add(item2);menu2.addSeparator();menu2.add(item3);menu2.addSeparator();menu2.add(item4);menu2.addSeparator();menu2.add(item14);menu2.addSeparator();menu2.add(item15);menu3.add(item5);menu3.addSeparator();menu3.add(menu5);menu3.addSeparator();menu3.add(menu6);menu4.add(item6);

36、menu5.add(item8);menu5.addSeparator();menu5.add(item9);menu5.addSeparator();menu5.add(item10);menu6.add(item11);menu6.addSeparator();menu6.add(item12);menu6.addSeparator();menu6.add(item13);menubar.add(menu1);menubar.add(menu2);menubar.add(menu3);menubar.add(menu4);setMenuBar(menubar);filedialog_sav

37、e=new FileDialog(this,保存文件对话框,FileDialog.SAVE);filedialog_save.setVisible(false);filedialog_load=new FileDialog(this,保存文件对话框,FileDialog.LOAD);filedialog_load.setVisible(false);filedialog_save.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_save.setVisible(fals

38、e););filedialog_load.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)filedialog_load.setVisible(false););addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)setVisible(false);System.exit(0););public void itemStateChanged(ItemEvent e)String name=l

39、ist.getSelectedItem();Font f=new Font(name,Font.PLAIN,12);area.setFont(f);public void changedUpdate(DocumentEvent e)String s=area.getText();public void removeUpdate(DocumentEvent e)changedUpdate(e);public void insertUpdate(DocumentEvent e)changedUpdate(e);public void actionPerformed(ActionEvent e)if

40、(e.getSource()=itemSave)filedialog_save.setVisible(true);if(filedialog_save.getFile()!=null)try File file=newFile(filedialog_save.getDirectory(),filedialog_save.getFile();tofile=new FileWriter(file);out=new BufferedWriter(tofile);out.write(area.getText(),0,(area.getText().length();out.close();tofile

41、.close();catch(IOException e1) else if(e.getSource()=itemLoad)filedialog_load.setVisible(true);area.setText(null);String s;if(filedialog_load.getFile()!=null)tryFile file=newFile(filedialog_load.getDirectory(),filedialog_load.getFile();file_reader=new FileReader(file);in=new BufferedReader(file_read

42、er);while(s=in.readLine()!=null)area.append(s+n);in.close();file_reader.close();catch(IOException e1) else if(e.getSource()=item1)area.setText(null);else if(e.getSource()=item2)area.cut();else if(e.getSource()=item3)area.copy();else if(e.getSource()=item4)area.paste();else if(e.getSource()=item5)Col

43、or newColor=JColorChooser.showDialog(this,调色板,area.getBackground();if(newColor!=null)area.setBackground(newColor);else if(e.getSource()=item6)zhuti zt=new zhuti();else if(e.getSource()=item7)System.exit(0);else if(e.getSource()=item8)Font font=area.getFont();int style=font.getStyle();style=style0;are

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论