目 录一、概要设计……………………………………………………………3二、程序整体设计说明…………………………………………….…..4三、程序部分源代码及注释…………………………………………….9四、测试结果………………………………………………………….24五、设计心得…………………………………………………………25六、致 谢…………………………………………………………25七、参考文献…………………………………………………………25【摘 要】该程序是一个图形界面的java文档编辑器,其界面主要采用了awt包, 程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用Time类的schedule方法实现了文件的定时自动更新功能,并创建备份文件,由于该编辑器是用的awt包,所以在技术上没有实现将Java的关键字以不同颜色显示功能。【关键字】java 编辑器一、概要设计Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。二、程序整体设计说明、程序框架图、程序中所用类说明(1)用户自定义类类名:EditInstantiation作用:实例化对象继承的父类:WindowAdapter主要成员变量:Frame myFrm // 定义主窗体TextArea myText // 定义文本编辑区Dialog myDlgFind,myDlgFindont //查找及设置字体对话框TextField TFfind, TFreplace, TffontSize//查找对话框和字体窗体中的文本行Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮Label Lf, Lr, Ls //定义和创建各标签MenuBar Mbbar //定义和创建主菜单Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项Toolkit toolKitClipboard myCB //剪切板对象FileDialog myFDlg //定义文件对话框Choice ChfontName //定义和创建字体选择框private int VIindex = 1; //构成文件名后缀变量private String VSsubFixStr=".java"; //构成文件名扩展名变量private String VSmyFileName = "Document1",VSmyBFileName;//文件名及备份文件名变量private File VFmyFile=new File(VSmyFileName+VIindex+".java");//文件名变量private int VIsearchPosition=0; //查找位置指针private Timer VTtime; //实例化一个Time类private int VImin=1; // schedule方法中的一个时间参数private int VItype=;//提示对话框类型private String VStitle; //提示对话框标题private String VSmessage; //提示对话框信息private boolean VBchanged = true; //改变字体的一个标识private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //设置字体大小及步长主要成员方法:public void init() //初始化各部件菜单的定义和事件的监听public void displayEdit ()//显示窗体及调用Time中的schedule方法public void windowClosing () //关闭窗体public void save //保存文件方法a.内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed()b.内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed ()c.内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListener(),ActionListener()(2)用户自定义类与Java类的继承关系图如下:自定义类 Java 类线程使用说明、实现接口方法本程序用到的方法有:schedule其方法描述如下:schedule(事件,启动时间,间隔时间);、线程应用本程序为文本编辑器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新、异常处理说明(1)打开文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常(2)保存文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常、程序运行效果及存在的问题(1)程序运行主要界面如下:a、主界面b、打开文件对话框c、保存文件对话框d、另存为文件对话框e、查找/替换对话框f.字体对话框.程序尚还存在的问题我花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个Java编辑器,程序基本实现了该课程设计的基本要求。但由于自己水平有限,使得程序还有不是很完善,首先,最重要的一点是该设计的最重要的功能自动改变java关键字的颜色没有实现。三、程序部分源代码及注释//****************************************************// class name :Edit// implements :none// extends :none// attribute :public// founction :entrance of the class//*****************************************************public class Edit{ //主类public static void main(String args[]){EditInstantiation myEdit= new EditInstantiation();(); //初始化(); //显示窗体}//****************************************************// class name :EditInstantiation// implements :none// extends :WindowAdapter// attribute :default// founction :EditInstantiation of the main class//*****************************************************class EditInstantiation extends WindowAdapter{ //默认属性类//define sources 定义各部件Frame myFrm=new Frame("我的编辑器"); //定义窗体TextArea myText=new TextArea(); //定义窗体Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定义查找对话框Dialog myDlgFindont=new Dialog(myFrm,"字体",true); //定义字体对话框TextField TFfind=new TextField(30);//定义查找对话中的查找输入框TextField TFreplace=new TextField(30); //定义查找对话中的替换输入框TextField TFfontSize,TFfontDemo;//定义字体大小文本框和示例框Choice CHfontName;//定义字体大小选择框List LTfontSize; //定义字体大小标签Button BfontOK,BfontCancel; //定义字体大小对话中的确定及取消按钮Button Bfind=new Button("查找");//定义查找对话中的查找按钮Button Breplace=new Button("替换");//定义查找对话中的替换及取消按钮Button Bnext=new Button("下一个");//定义查找对话中的下一个及取消按钮Button Bcancel=new Button("取消");//定义查找对话中的确定及取消按钮Label Lf=new Label("查找内容:");Label Lr=new Label("替换为: ");Label Ls=new Label("字体大小:");FileDialog myFDlg;Clipboard myCB=().getSystemClipboard(); //剪切板对象Menu Mfile,Medit,Mformation,Mhelp;MenuBar MBbar;//define varities //定义各变量private int VIindex = 1;private String VSsubFixStr=".java";private String VSmyFileName = "Document1",VSmyBFileName;private File VFmyFile=new File(VSmyFileName+VIindex+".java");private int VIsearchPosition=0;private Timer VTtime;private int VImin=1; // parameter in time schedulprivate int VItype=;private String VStitle;private String VSmessage;// flag of the changeingprivate boolean VBchanged = true;// the scope of the fontprivate int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;//************************************************//founction name:init()//parameter :none//attribute :public//founction :initia all compont//************************************************public void init(){ //初始化各部件//------------------ set menu ------------------MBbar=new MenuBar();(MBbar);Mfile=new Menu("文件");Medit=new Menu("编辑");Mformation=new Menu("格式");Mhelp=new Menu("帮助");(Mfile);(Medit);(Mformation);(Mhelp);//文件菜单 add File (new MenuItem("新建",new MenuShortcut()));(new MenuItem("打开",new MenuShortcut()));(new MenuItem("保存",new MenuShortcut()));(new MenuItem("另存为"));();//分隔线(new MenuItem("退出",new MenuShortcut()));//编辑菜单 add Edit (new MenuItem("剪切"));//,new MenuShortcut()));(new MenuItem("复制"));//new MenuShortcut()));(new MenuItem("粘贴"));//new MenuShortcut()));(new MenuItem("删除"));//new MenuShortcut()));();//分隔线(new MenuItem("查找/替换",new MenuShortcut()));();//分隔线(new MenuItem("全选",new MenuShortcut()));//格式菜单 add Formation (new MenuItem("字体",new MenuShortcut()));//帮助菜单 add Formation (new MenuItem("关于作者"));//----------------- menu add end -------------------------//add Menu Action (new KeyEvents());(new KeyEvents());(new KeyEvents());(new FindKeyEvent());//--------------------------- Find (350,115);(250,150);(new FlowLayout());();(false);(false);(false);(Lf);(TFfind);(Lr);(TFreplace);(Bfind);(Breplace);(Bnext);(Bcancel);(new WindowAdapter(){public void windowClosing(WindowEvent e){(false);}});//为查找对话框窗体注册事件监听(new KeyEvents());//注册事件监听(new FindKeyEvent());(new FindKeyEvent());(new FindKeyEvent());(new FindKeyEvent());//--------------- end add action listener ------------//================set font dialog ==============//font size text fieldTFfontSize = new TextField("8",14);();//font size list fieldLTfontSize = new (5, false);(new fontEvent());for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep)(i + "");//添加字体大小(0);//two Button Ok CancelBfontOK = new Button("确定");(new fontEvent());BfontCancel = new Button("取消");(new fontEvent());//a TextField for demo the fontTFfontDemo = new TextField("Java awt",37);(false);// my font dialog设置字体对话框(new FlowLayout());();(Ls);(TFfontSize);(BfontOK);(BfontCancel);(LTfontSize);(TFfontDemo);(300,200);(300,200);(false);(new WindowAdapter() {public void windowClosing(WindowEvent e) {(false);}}); //为字体对话框窗体注册事件监听//=============end set font dialog// =======set Edit frame设置编辑器窗休(myText,);(500,400);();(this);(500,400);(200,100);("Java编辑器");}//************************************************//founction name:displayEdit()//parameter :none//attribute :public//founction :initial and display the frame//************************************************public void displayEdit(){ //显示窗体(true);//---------------------- auto save ---------------------VTtime = new Timer(true);(new (){public void run(){if(VSmyFileName!=null){save(VSmyFileName+".java");VSmyBFileName=VSmyFileName+".bak";} //添加自动保存功能save(VSmyBFileName);}}, VImin*60*1000,VImin*60*1000);//parament 1 the task//parament 2 when to start the task//parament 3 set the interval time }//****************************************************// class name :KeyEvents// implements :ActionListener// extends :KeyAdapter// attribute :default// founction :implement the mouse and key action//*****************************************************class KeyEvents extends KeyAdapter implements ActionListener{//********************************************************//founction name:actionPerformed()//parameter :none//attribute :public//return :void//founction :realize the key action in the menu//*********************************************************public void actionPerformed(ActionEvent e){//完成菜单事件的功能// File Menuif (()=="新建"){//remind youJFrame aFrame=new JFrame();();JOptionPane optionPane=new JOptionPane();String choices[]={"是","否","取消"};int n=(aFrame,"文件正文已更改,是否保存更改","文本编辑器",[0]);//保存文件后新建if(n==0){//若文件存在,保存在原文件中,再新建文件try{if(()){save(VSmyFileName); // call the save ("");VIindex++;}else{//若文件不存在,则保存后再新建myFDlg=new FileDialog(myFrm,"保存文件",);(VSmyFileName);();VSmyFileName=()+();save(VSmyFileName);("");VIindex++;}}catch(Exception ne){}}//不保存文件新建if(n==1){("");VIindex++;}//取消新建if(n==0){return;}}//打开菜单 Open Menuif (()=="打开") {myFDlg=new FileDialog(myFrm,"打开",);();if (()!="") {VFmyFile=new File(()+());VSmyFileName=()+();if( ()){try{FileReader fr=new FileReader(VFmyFile);BufferedReader br=new BufferedReader(fr);String text;("");while ((text=())!=null)(text+"\r\n");();();}catch(IOException ioe){VStitle="提示";VSmessage="打开文件出错";(myFrm,VSmessage,VStitle,VItype);}}}}//保存菜单 Save Menuif (()=="保存"){myFDlg=new FileDialog(myFrm,"保存文件",);(VSmyFileName);();VSmyFileName=();if(VSmyFileName!=null){VSmyFileName=()+();save(VSmyFileName);}}//另存为菜单 SaveAs Menuif (()=="另存为"){myFDlg=new FileDialog(myFrm,"文件另存为",1);(VSmyFileName);();VSmyFileName=();if(VSmyFileName!=null){VSmyFileName=()+();save(VSmyFileName);}}//退出菜单 exit Menuif (()=="退出")(0);//编辑 Edit Menuif (()=="剪切"){//CutString text =();StringSelection selection = new StringSelection(text);(selection, null);("",(),());}if (()=="复制"){//copyString text=();if(text!=null){StringSelection selection=new StringSelect
TAGS: 毕业论文 计算机 基于 远程 对象 RMI 方法 实现 调用 哪位老兄有计算机毕业设计论文啊?是基于java的,小弟急用,谢谢!用RMI开发基于Java的企业分布式应用我站还提供更多的免费计算机论文,但免费论文仅供参考,建议广大网友下载后不要轻易采用。摘要由于Java具有跨平台、代码可移植性、安全高效等广泛而强大的功能,因而在开发网络分布式应用的时候,可以用它自身的机制实现分布式计算,一种基于Java的远程方法调用(RMI)为我们开发企业分布式应用提供了行之有效的解决方案。关键词 Java RMI 企业分布式应用 1 概述随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。在当今的编程术语里,分布式计算已经成为很常见的词,它将企业的业务数据和程序分布在网络的不同物理位置上,通过调动网络上多台计算机的处理能力,发挥远程调用数据的功能。远程方法调用(Remote Method Invocation ,RMI),可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信。JVM可以位于相同或不同计算机上,在多个JVM中,一个JVM可以调用存储在其它JVM的对象的方法。本文主要介绍RMI的特点,分析应用RMI进行企业分布式计算的原理,以及利用RMI实现基于Java的企业分布式应用的具体步骤。2 远程方法调用(RMI)的特点 TCP编程的缺点由于Java编程语言设计之初就是面向对象和支持网络的,因此,基于对象的RMI机制已经内置在Java平台中。我们经常会在网络开发中使用TCP/IP编程,这样,自然而然地就会涉及到Socket(套接字)编程。但是,使用Socket编程需要大量重复编码,在复杂分布式操作时显得非常麻烦,而且易于出错。因此,如何快速、高效、安全、可扩展地进行网络分布式计算,是开发者们一贯追求和倡导的主题。直到RMI的出现,这种繁杂、低效的开发情况才有很大改观。 RMI编程的特点当我们利用对象序列化在网络上分配对象时,RMI提供了非Java平台无法匹敌的独特而强电子商务资料库)*!%267'$#7'455大的分布式计算模型,RMI主要有以下特点:? 客户机可以向本地方法一样调用远程服务器上的方法;? 可以根据接口指定客户机/服务器编程合约;? 可以从服务器对象缺省二进制类文件,自动生成调动/反调动代码;? 将Java编程模型扩展到机器边界(和Java虚拟机(JVM)边界之外),不需要任何特殊语法;? 还可以和一个远程方法调用中的数据同时传输行为(代码)。尽管RMI不是唯一的企业级远程对象访问方案,但它却是最容易实现的。 RMI与CORBA作为分布式应用程序框架的规范,COBRA首当其冲,它是由对象管理组织(OMG)开发的。与CORBA不同的是,CORBA能够利用不同编程语言(例如C/C++、Basic等)开发实现分布式应用,而RMI是一种纯Java解决方案。在RMI中,程序的所有部分都由Java语言编写,这样,开发出来的程序完全符合Java规范,便于实现跨平台访问、扩展和移植。按照笔者所在西北电力建设集团公司的情况看,服务器操作系统主要有Linux和Windows2000 Server,分别存在于公司和部门当中,它们是不同的系统平台;同时,公司下属各个工程项目部又距离很远,近的几十公里,远则达到上千公里甚至位于国外,因此跨平台和远程访问这两大功能在开发企业应用系统时就必须考虑,而RMI恰恰能够用它的自身特点来满足编程需要。3 RMI基本体系结构简介RMI通过TCP/IP在内部使用Socket,象其名称暗示的那样,它能够帮助我们查找并执行远程对象的方法。RMI的目的是让位于不同JVM中的对象,在外观及行为上都像是本地的对象。通常,我们把调用这种远程对象的JVM,称为客户机;而把包括这种远程对象的JVM,称为服务器。尽管对一个远程对象的引用和获得对本地对象的引用有所不同,但我们可以把远程对象像本地对象一样使用。应用程序并不知道一个对象是远程的还是本地的。实际上,远程对象上被调用的方法与本地对象上调用的方法,具有相同的语法结构。作为RMI的底层(会包含复杂的Socket操作),它会自动截获方法调用,找到远程对象,然后处理远程请求。笔者认为,RMI设计的重要之处,就在于不但在设计上实现了远程访问功能,而且实现了设计的透明性。RMI的基本体系结构,概括起来说,由三个抽象层组成: 存根/框架层(Stubs/Skeletons Layer)
一切一切…网上搜搜…给我分吧…回答者: 不知道吧哈哈哈 - 高级魔法师 七级 5-11 08:53这个不知道吧哈哈哈就是垃圾厚脸皮跟人家要分
(new MenuItem("剪切"));//,new MenuShortcut()));
164 浏览 4 回答
176 浏览 5 回答
169 浏览 5 回答
188 浏览 6 回答
179 浏览 4 回答
264 浏览 5 回答
295 浏览 5 回答
106 浏览 6 回答
146 浏览 7 回答
323 浏览 8 回答
234 浏览 7 回答
277 浏览 5 回答
220 浏览 5 回答
358 浏览 8 回答
133 浏览 5 回答