Java第三次作业 《文本编辑器》

合集下载

java课设文本编辑器的设计与实现

java课设文本编辑器的设计与实现

淮海工学院计算机工程学院
课程设计报告
设计名称:面向对象课程设计
选题名称:文本编辑器的设计与实现
姓名:学号:
专业班级:
系(院):计算机工程学院
设计时间:2015.6.21~2014.7.4
设计地点:计算机楼机房、教室、宿舍
();
("确定");
("这是一个简单的文本编辑器!");
();
();
();
(200,200,250,150);
();
(20 ,60,220,30);
( ("楷体",16));
();
(100,100,50,30);
();
}
( e)
{
(())
{
();
}
}
}
4.2运行结果显示
如图1:文本编辑器主界面
如图2:文本编辑器文件菜单
如图3:
文本
编辑
器编
辑菜

如图4:文本编辑器格式菜单
如图5:文本编辑器帮助菜单
如图6:文本编辑器字体格式和背景
如图7:
文本编。

重大考试Java程序设计第三次作业纯手打.doc

重大考试Java程序设计第三次作业纯手打.doc

2013年9月份考试Java程序设计第三次作业一、程序阅读题(本大题共30分,共 5 小题,每小题 6 分)1. public class test{static StringBuffer sb1=new StringBuffer("Hello");static StringBuffer sb2=new StringBuffer("Hello");public static void main(String args[]){aMethod(sb1,sb2);System.out.println("sb1 is "+sb1);System.out.println("sb2 is "+sb2);}public static void aMethod(StringBuffer sb1,StringBuffer sb2) {sb2.append(" there");sb1=sb2;}}2. public class test{public static void stringReplace(String text){text.replace(''a'',''e'');}public static void bufferReplace(StringBuffer text){text=text.append("s");}public static void main(String args[]){String textString=new String("china");StringBuffer textBuffer=new StringBuffer("china");stringReplace(textString);bufferReplace(textBuffer);System.out.println(textString+textBuffer);}}3.4. class A{class Dog{private String name;private int age;public int step;Dog(String s,int a){name=s;age=a; step=0;}public void run(Dog fast){fast.step++;}}public static void main (String args[]) {A a=new A();Dog d=a.new Dog("Tom",3);d.step=25;d.run(d);System.out.println(d.step);}}5. public class test{public static void main (String args[ ]){int a =25, b=3, e =3;if(e!=0&&a/e>5) System.out.println("a/e="+a/e);int f=0; if(f!=0&&a/f>5) System.out.println("a/f"+a/f);else System.out.println("f="+f);}}二、简答题(本大题共30分,共 5 小题,每小题 6 分)1. 什么是接口,它的主要作用是什么?2. String类与StringBuffer类的主要区别是什么?3. 什么是Applet,如何运行一个Applet?4. 如何构造一个线程(两种方法)?5. 如果需要的文件不存在,在访问时会产生异常吗,产生什么异常?三、程序设计题(本大题共40分,共 4 小题,每小题 10 分)1. 编写程序实现根据月份自动判断题该月所属季节的功能(3~5月为春季,6~8为夏季,9~11为秋季,12,1,2为冬季)2. 编写程序将任意三个变量a,b,c中的值进行交换,使得变量a的值最小,b其次,c的值最大.3. 编写一个程序,从标准输入(即键盘)读入10个整数存入整型数组a中,然后逆序输出这10个整数.4. 编写程序输出如下所示图形答案:一、程序阅读题(30分,共 5 题,每小题 6 分)1.参考答案:sb1 is Hello sb2 is Hello there解题方案:评分标准:完全一样才得分2.参考答案:chinachinas解题方案:评分标准:完全一样才得分3.参考答案:4解题方案:评分标准:完全一样才得分4.参考答案:26解题方案:评分标准:完全一样才得分5.参考答案:a/e=8 f=0解题方案:评分标准:完全一样才得分,多写不得分二、简答题(30分,共 5 题,每小题 6 分)1.参考答案:接口就是方法定义和常量值的集合,从本质上讲,接口是一种特殊的抽象类,这种抽象类中包含常量和方法的定义,而没有变量的和方法的实现. 它的的主要作用包括以下几方面:(1)通过接口可以实现不相关类的相同行为,而不需考虑这些类之间的的层次关系. (2)通过接口可以指明多个类需要实现的方法.(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类.解题方案:评分标准:接口概念1分,作用1个1分2.参考答案:类StringBuffer可以直接改变字符串的值或长度,而String对象却只能访问,不能直接进行修改,如果要修改,必须先生成对象的拷贝,再对拷贝进行修改.这是它们之间最大的区别.解题方案:评分标准:回答太简单得2分,全面4分3.参考答案:Applet是嵌入到网页的java小程序.Applet在浏览器中运行,必须创建一个html文件,把Applet嵌入到html中,在浏览器中给出html文件的URL地址即可解题方案:评分标准:1个小问题2分4.参考答案:构造线程体有两种方式 1定义一个线程类,它继承Thread类,并重写其中的run ()方法.直接生成这个类的对象就可以构造一个线程.2提供一个实现接口?Runnable的类作为线程的目标对象.在构造线程对象时,通过方法?Thread(Runnable?target,String?name)把目标对象传给这个线程实例. 解题方案:评分标准:1个方法2分5.参考答案:会产生异常,因为,如果构造FileInputStrem对象访问文件时,如果文件不存在,不能构造FileInputStream对象,器构造方法会抛弃FileNotFoundException类型的异常.解题方案:评分标准:会产生异常2分,产生什么异常2分三、程序设计题(40分,共 4 题,每小题 10 分)1.参考答案:public class MyClass3_3{public static void main(String args[]) {int month=7;String season;switch(month){case 12: case 1: case 2: season="冬季"; break;case 3: case 4: case 5: season="春季"; break;case 6: case 7: case 8: season="夏季"; break;case 9: case 10: case 11: season="秋季"; break; default: season="非月份数据";}System.out.println(month+"月是"+season); }}解题方案:评分标准:结构3分,功能实现4分,语法3分2.参考答案:public class Example{public static void main(String args[]) {int a=9,b=5,c=7,t;if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}System.out.println("a="+a+",b="+b+",c="+c);}}解题方案:评分标准:结构3分,功能实现4分,语法3分3.参考答案:import java.io.BuffereReader;import java.io.IOException;import java.io.InputStreamReader; public class ReaderNum{{public static void main(String args[ ])throws IOException{int i,n=10;int a[ ] =new int[10]; InputStreamReader ir=new InputStreamReader(System.in); BufferedReader ir=new BufferedReader(ir);String s;for(i=0;i<n;i++){s=in.readLine();a[i]=Integer.parseInt(s);}for(i=n-1;i>=0;i--)System.out.print(a[i]+" ");}}解题方案:评分标准:结构3分,功能实现4分,语法3分. 重点:for ( i = n-1 ; i >= 0 ; i -- ) System.out.print(a[i]+" ");4.参考答案:public class In {public static void main(String[ ]args){ int i,j;for(i=1;i<=8;i++){if(i<=4)//输出前四行{for (j=1;j<=2*i-1;j++)System.ou.print("*");System.out.print1n();} else//输出后四行{for(j=1;j<=9-i;j++)System.out.print("*");System.out.print1n();}}}}解题方案:评分标准:结构3分,功能实现4分,语法3分。

java实现简易文本编辑器

java实现简易文本编辑器

java实现简易文本编辑器importjava.awt.某; importjava.awt.event.某; importjava 某.wing.某; importjava某.wing.event.某; importjava.util.某; importjava.io.某; importjava某.wing.filechooer.某; importjava某.wing.filechooer.FileFilter; importjava.awt.datatranfer.某; publicclaTe某te某tendJFrame { Te某tAreaarea; Stringname=null; Stringboard=null; privateClipboar dcb; publicTe某t()throwE某ception { etTitle("记事本"); Toolkitkit=Toolkit.getDefaultToolkit(); Imageimg=kit.getIm age("01.jpg"); etIconImage(img); JMenuBarjmb=newJMenuBar(); a dd(jmb); etJMenuBar(jmb); JMenufile=newJMenu("文件"); JMenuedit=newJMenu("编辑"); JMenuItemrebuild=newJMenuItem("新建"); JMenuItemave=newJMenuItem("保存"); JMenuItemopen=newJMenuItem("打开"); JMenuItemanotherSave=newJMenuItem("另存为"); file.add(rebuild); file.add(ave); file.add(open); file.a dd(anotherSave); rebuild.etAccelerator(KeyStroke.getKeyStroke(" ctrlN")); open.etAccelerator(KeyStroke.getKeyStroke("ctrlO")); ave.etAccelerator(KeyStroke.getKeyStroke("ctrlS")); anotherSa ve.etAccelerator(KeyStroke.getKeyStroke("ctrlA")); area=newTe 某tArea(); add(area); //JScrollPanecroldPane=newJScrollPane(area );//设置滚动轴//add(croldPane); ave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ aveTe某t(); }catch(E某ceptione某) { } } }); open.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ openTe某t(); }catch(E某ceptione某) { } } }); rebuild.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ area.etTe 某t(""); name=null; }catch(E某ceptione某) {} } }); anotherSave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { anotherSaveTe 某t(); } }); JMenuItemcut=newJMenuItem("剪切"); JMenuItemcopy=newJMenuItem("复制"); JMenuItemplater=newJMenuItem("粘贴"); JMenuItemall=newJMenuItem("全选"); edit.add(cut); edit.add(copy); edit.add(plater); edit.ad d(all); cut.etAccelerator(KeyStroke.getKeyStroke("ctrl某")); copy.etAccelerator(KeyStroke.getKeyStroke("ctrlC")); plat er.etAccelerator(KeyStroke.getKeyStroke("ctrlV")); all.etAccele rator(KeyStroke.getKeyStroke("ctrlA")); cb=Toolkit.getDefaultTo olkit().getSytemClipboard(); cut.addActionLitener(newActionLite ner()//剪切{ publicvoidactionPerformed(ActionEvente) { board=area.ge tSelectedTe某t(); cb.etContent(newStringSelection(board),null); area.replaceRange("",area.ge tSelectionStart(),area.getSelectionEnd()); } }); copy.addActionLitener(newActionLitener()//复制{ publicvoidactionPerformed(ActionEvente) { board=area.getSelectedTe某t(); cb.etContent(newStringSelection(board),null); } }); pla ter.addActionLitener(newActionLitener()//粘贴{ publicvoidactionPerformed(ActionEvente) { try{ Tranfer ablecontent=cb.getContent(null); Stringt=(String)content.getTra nferData(DataFlavor.tringFlavor); area.replaceRange(t,area.getS electionStart(),area.getSelectionEnd()); }catch(E某ceptione 某) {} } }); all.addActionLitener(newActionLitener()//全选{ publicvoidactionPerformed(ActionEvente) { area.etSelect ionStart(0); area.etSelectionEnd(area.getTe某t().length()); } }); JMenuhelp=newJMenu("帮助"); JMenuItemabout=newJMenuItem("关于"); help.add(about); about.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { JFrameframe=new JFrame("关于"); frame.etSize(150,100); frame.etLocation(400,300); JTe某tAreaarea1=newJTe某tArea("制作人:杨杰\n制作时间:2022.8.03"); frame.add(area1); frame.etViible(true); } }); jmb.add(file); jmb.add(edit); jmb.add(help); etSize(600,400);etLocation(300,200); etViible(true); etDefaultCloeOperation( JFrame.E某IT_ON_CLOSE); } publicvoidopenTe某t()//打开{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howOpenDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); etTitle(name); try{ BufferedReade rin=newBufferedReader(newFileReader(name)); Stringline=null; S tringdata=""; while((line=in.readLine())!=null) { if(data=="" ) { data=data+line; } ele { data=data+"\n"+line; } } ar ea.etTe某t(data); in.cloe(); }catch(E某ceptione某) { } } } publicvoidaveTe某t()//保存{ if(name==null) { JFileChooerchooer=newJFileChooer(); F ileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } ele { try{ OutputStreamout=newFileOutputStre am(name); Stringdata=area.getTe某t() ; out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publicvoidanotherSaveTe某t()//另存为{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write( data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publictaticvoidmain(String[]arg)throwE 某ception { newTe某t(); } }。

如何使用文本编辑器创建新的程序文件

如何使用文本编辑器创建新的程序文件

如何使用文本编辑器创建新的程序文件程序员们在编写代码时通常会使用文本编辑器来创建新的程序文件。

文本编辑器是一种软件工具,用于处理、编辑和生成纯文本文件。

下面将介绍如何使用文本编辑器创建新的程序文件的步骤。

第一步:选择适合编程的文本编辑器首先,我们需要选择一款适合编程的文本编辑器。

目前市面上有许多文本编辑器可供选择,如Sublime Text、Visual Studio Code、Atom 等。

这些编辑器有丰富的功能和插件,让编程更加方便高效。

第二步:打开文本编辑器并创建新文件在选择并安装好合适的文本编辑器后,我们打开该编辑器,准备创建新的程序文件。

在编辑器的菜单中,选择“文件”或“新建”选项,然后选择“新建文件”或者直接使用快捷键Ctrl+N(或Cmd+N)来创建一个新的空白文件。

第三步:选择适合的文件类型和格式一般来说,编程需要用到不同的文件类型和格式,如C、C++、Java、Python等。

因此,在创建新文件时,我们需要根据要编写的程序语言来选择相应的文件类型和格式。

在大多数文本编辑器中,可以通过选择“文件”菜单中的“保存为”选项或者使用快捷键Ctrl+S(或Cmd+S)来保存新文件。

在保存时,我们要注意选择正确的文件类型和格式,并为文件起一个合适的名字,以便后续的编程工作。

第四步:编写程序代码一旦新的程序文件创建并保存好,我们就可以开始编写程序代码了。

通过在文本编辑器中输入代码,并利用编辑器的代码自动补全、语法高亮等功能,可以更加高效地编写程序。

需要注意的是,在编写代码时要保持良好的代码风格和缩进,以提高代码的可读性和维护性。

第五步:保存和管理程序文件在编写程序的过程中,及时保存程序文件是十分必要的。

通过选择文本编辑器中的“保存”选项或使用快捷键Ctrl+S(或Cmd+S)保存文件,可以保留最新的代码修改。

另外,在项目的开发过程中,我们可能会有多个程序文件需要创建和管理。

因此,我们可以使用文本编辑器提供的“新建标签页”或“分屏显示”功能,便于在同一个编辑器窗口中同时查看和编辑多个文件。

制作一个文本编辑器java课程设计报告

制作一个文本编辑器java课程设计报告

《Java语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间:2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路 (2)二、设计过程 (3)三、测试结果 (12)四、心得体会 (13)五、程序代码 (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。

现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。

在编辑菜单下的子菜单复制,可以进行对文本的复制。

在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。

而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。

而且用户也可以根据自己的需要改变窗体的大小。

2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。

Java语言与WWW技术形成性考核第三次作业

Java语言与WWW技术形成性考核第三次作业

《Java语言与WWW技术》形成性考核第三次作业一、选择题1、创建一个标识有”关闭”按扭的语句是()。

A.TextField b = new TextField(“关闭”);B.Label b = new Label(“关闭”);C.Checkbox b = new Button(“关闭”);D.Button b = new Button(”关闭”);2、在Java中,开发图形用户界面的程序需要使用一个系统提供的类库,这个类库就是()包A.java.io B. java.awt C.java.applet D. java.awt.event3.在Java图形用户界面编程中,若显示一些不需要修改的文本信息,一般是使用()类的对象来实现。

A. LabelB.ButtonC. TextAreaD. TextField4.在编写Java Applet程序时,若需要对发生的事件作出响应和处理,一般需要在程序的开头写上()语句。

A.import java.awt.*;B.import java.applet.*;C.import java.io.*;D. import java.awt.event.*;5、AWT库中最基础的类是()。

A. ponentB. ng.ObjectC. java.awt.ContainerD. java.awt.Panel6.在Applet中,创建一个具有10行45列的多行文本区域对象ta的语句为:()A、TextEvent ta = new TextEvent(10 , 45 );B、TextArea ta = new TextArea( 10 , 45 );C、Lable ta =new Lable ( 10 , 45 );D、TextField ta = new TextField ( 10 , 45 )7、以下代码完成画线功能,所画线的颜色是()。

1.g.setColor(Color.red.green.yello.cyan);2.g.drawLine(0,0,100,100);A.redB.greenC.yelloD.cyan8、以下()可能包含菜单条。

Java文本编辑器实现方法详解

Java文本编辑器实现方法详解

Java⽂本编辑器实现⽅法详解本⽂实例讲述了Java⽂本编辑器实现⽅法。

分享给⼤家供⼤家参考,具体如下:结构分析:界⾯布局: EditFramemain⽅法所在: EditText打开功能实现: FileReadThread保存跟能实现: save实际运⾏效果:附:完整代码实现⼀、 EditFrame包括⼀个菜单Menu底部:⽇期时间代码附上:public class EditFrame extends JFrame {// TODO ⾃动⽣成的构造函数存根boolean saveFlag = false;File saveFileRoot = null;JFrame jFrame;JPanel jPanelSouth;JMenuBar jMenuBar1;JMenu jMenu1;JMenuItem jMenuItem1;JMenuItem jMenuItem2;JMenuItem jMenuItem3;JMenuItem jMenuItem4;JSeparator jSeparator1;JTextArea jTextArea;JScrollPane scrollPane;// 滚动条public EditFrame() {// TODO ⾃动⽣成的构造函数存根jFrame = new JFrame("⽔中鱼之1999-⽂本编辑器");jPanelSouth = new JPanel();jMenuBar1 = new JMenuBar();jMenu1 = new JMenu("⽂件");jMenuItem1 = new JMenuItem("打开");jMenuItem2 = new JMenuItem("保存");jMenuItem3 = new JMenuItem("另存为");jMenuItem4 = new JMenuItem("退出");jSeparator1 = new JSeparator();jTextArea = new JTextArea();scrollPane = new JScrollPane(jTextArea);jFrame.setSize(800, 500);jFrame.setLocationRelativeTo(null);jFrame.setVisible(false);setLayout();setSouthPanel();// set relationship for your componentsetRelationShip();// 设置 scrollPane for TextAreasetScscrollPane();iniClick();}private void setRelationShip() {jFrame.add(BorderLayout.CENTER, scrollPane);jFrame.add(BorderLayout.SOUTH, jPanelSouth);jMenu1.add(jMenuItem1);jMenu1.add(jMenuItem2);jMenu1.add(jMenuItem3);jMenu1.add(jSeparator1);jMenu1.add(jMenuItem4);jMenuBar1.add(jMenu1);jFrame.setJMenuBar(jMenuBar1);}private void setLayout() {GridLayout gridLayout = new GridLayout(1, 2);jPanelSouth.setLayout(gridLayout);}private void setScscrollPane() {// jTextArea.setLineWrap(true);// 设置满⼀⾏⾃动换⾏scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);}private void setSouthPanel() {// add time for SouthPanelJLabel jLabelDate = new JLabel("Date");JLabel jLabelTime = new JLabel("Time");Timer timeAction = new Timer(1000, new ActionListener() {public void actionPerformed(ActionEvent e) {long timemillis = System.currentTimeMillis();// 转换⽇期显⽰格式SimpleDateFormat date = new SimpleDateFormat("yyyy 年 MM ⽉ dd ⽇ ");jLabelDate.setText(" 当前⽇期: " + date.format(new Date(timemillis)));SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");jLabelTime.setText(" 当前时间: " + time.format(new Date(timemillis)));}});jPanelSouth.add(jLabelDate);jPanelSouth.add(jLabelTime);timeAction.start();}private void iniClick() {jFrame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubint x = JOptionPane.showConfirmDialog(null, "确认退出么?", "友情提⽰", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);if (x == 0) {System.exit(0);}}@Overridepublic void windowClosed(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowActivated(WindowEvent e) {// TODO Auto-generated method stub}});jMenuItem4.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubint x = JOptionPane.showConfirmDialog(null, "确认退出么?", "友情提⽰", JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);if (x == 0) {System.exit(0);}});jMenuItem1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubFileReadThread fileReadThread = new FileReadThread(EditFrame.this);// 开启⽂件读取线程fileReadThread.start();System.out.println(saveFileRoot);saveFlag = true;jTextArea.setText("");}});jMenuItem3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubSave save = new Save(EditFrame.this);save.start();saveFlag = true;}});jMenuItem2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif (!saveFlag) {Save save = new Save(EditFrame.this);save.start();saveFlag = true;} else {new Save(EditFrame.this, saveFileRoot);}}});}public JTextArea getjTextArea() {return jTextArea;}public void setjTextArea(JTextArea jTextArea) {this.jTextArea = jTextArea;}public File getSaveFileRoot() {return saveFileRoot;}public void setSaveFileRoot(File saveFileRoot) {this.saveFileRoot = saveFileRoot;}public JFrame getjFrame() {return jFrame;}public void setjFrame(JFrame jFrame) {this.jFrame = jFrame;}}⼆、测试类 EditText分两部分:1.闪屏由于加载页⾯需要时间原想⽤ SplashScreen 由于打包成jar包才能⽤所以这⾥⽤jframe进⾏替代闪屏图⽚直接粘贴到:2.new ⼀个EditFrame 对象,闪屏结束后设置为可见public class EditText {public static void main(String[] args) {new Thread() {@Overridepublic void run() {// TODO Auto-generated method stubEditFrame editFrame = new EditFrame();JFrame jFrame = new JFrame();JPanel jPanel = new javax.swing.JPanel(){protected void paintComponent(java.awt.Graphics g){super.paintComponent(g);g.drawImage(new ImageIcon("experiment_bac.jpg").getImage(),0,0,400,250,null);}};jFrame.add(jPanel);jFrame.setVisible(true);jFrame.setSize(400, 300);jFrame.setLocationRelativeTo(null);try {sleep(1500);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}jFrame.dispose();editFrame.getjFrame().setVisible(true);}}.start();}}三、FileReadThread调⽤swing⾃带的 JFileChooser选择⽂件路径class FileReadThread extends Thread {private EditFrame test;public FileReadThread(EditFrame test ) {this.test = test;}@Overridepublic void run() {JFileChooser chooser = new JFileChooser("d:/");chooser.setFileFilter(new FileFilter() {// 定义⽂件过滤器,仅显⽰⽂件夹和txt⽂本@Overridepublic String getDescription() {return null;}@Overridepublic boolean accept(File file) {if (file.isDirectory() || file.getName().endsWith(".txt"))return true;return false;}});int option = chooser.showOpenDialog(test);if (option == JFileChooser.APPROVE_OPTION) {File selFile = chooser.getSelectedFile();try {BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(selFile), "gbk")); test.setSaveFileRoot(selFile);String line = null;while ((line = reader.readLine()) != null) {test.getjTextArea().append(line + "\n");Thread.sleep(30);// 线程暂停,以看到读取过程效果}} catch (Exception e1) {e1.printStackTrace();}JOptionPane.showMessageDialog(test, "读取完毕");}}}四、save 保存保存的调⽤分三种:如果该⽂件是打开的那么保存到打开⽂件中如果该⽂件还未保存这调⽤:进⾏保存如果该⽂件已经另存为,则直接保存到另存为得的⽬录下public class Save extends Thread {private EditFrame area;private File saveFileRoot = null;public Save(EditFrame area, File saveFileRoot) {System.out.println(saveFileRoot + "123");String text = area.getjTextArea().getText();String[] lines = text.trim().split("\n");try {PrintWriter out = new PrintWriter(new FileOutputStream(saveFileRoot), true);for (String line : lines)out.println(line);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public Save(EditFrame area) {this.area = area;JFileChooser chooser = new JFileChooser();chooser.setCurrentDirectory(new File("."));chooser.setFileFilter(new FileFilter() {@Overridepublic boolean accept(File f) {return f.getName().toLowerCase().endsWith(".txt");}@Overridepublic String getDescription() {return "SAVE TO";}});int r = chooser.showSaveDialog(area);if (r != JFileChooser.APPROVE_OPTION)return;File f = chooser.getSelectedFile();area.setSaveFileRoot(f);String text = area.getjTextArea().getText();String[] lines = text.trim().split("\n");try {PrintWriter out = new PrintWriter(new FileOutputStream(f), true);for (String line : lines)out.println(line);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public File getSaveFileRoot() {return saveFileRoot;}public void setSaveFileRoot(File saveFileRoot) {this.saveFileRoot = saveFileRoot;}}更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。

java文本编辑器源码

java文本编辑器源码

/** To change this template, choose Tools | Templates* and open the template in the editor.*/package NotepadDemo;/**** @author DELL*/import java.awt.BorderLayout;import java.awt.FileDialog;import java.awt.Font;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.TitledBorder;public class NotepadDemo extends JFrame {private static final long serialVersionUID = -5355432125621015300L;private String url = null;//文件路径private String str=null;//复制或剪切的字符串private StringSelection stringSelection=null;private Clipboard clipboard=new Clipboard(str);private Transferable transferable=null;private DataFlavor flavor=null;public NotepadDemo() {init();}private void init() {setTitle("文本编辑器");setSize(500, 600);setContentPane(createContentPane());//添加主面板}/*创建主面板*/private JPanel createContentPane() {JPanel pane = new JPanel(new BorderLayout());pane.add(BorderLayout.NORTH, createChocePane());//添加菜单栏pane.add(createAreaPane());//添加文本编辑区域return pane;}/*创建菜单栏,以及实现功能*/private JPanel createChocePane() {JPanel pane = new JPanel();JMenuBar menuBar1 = new JMenuBar();JMenu menu = new JMenu("文件");menuBar1.add(menu);JMenuItem menuIt1 = new JMenuItem("新建");JMenuItem menuIt2 = new JMenuItem("打开");JMenuItem menuIt3 = new JMenuItem("保存");JMenuItem menuIt4 = new JMenuItem("另存为");menu.add(menuIt1);menu.add(menuIt2);menu.add(menuIt3);menu.add(menuIt4);JMenuBar menuBar2 = new JMenuBar();JMenu menu2 = new JMenu("编辑");menuBar2.add(menu2);JMenuItem menuIt5 = new JMenuItem("复制");JMenuItem menuIt6 = new JMenuItem("剪切");JMenuItem menuIt7 = new JMenuItem("粘帖");menu2.add(menuIt5);menu2.add(menuIt6);menu2.add(menuIt7);JMenuBar menuBar3 = new JMenuBar();JMenu menu3 = new JMenu("帮助");menuBar3.add(menu3);JMenuItem menuIt8 = new JMenuItem("关于记事本");menu3.add(menuIt8);pane.add(menuBar1);pane.add(menuBar2);pane.add(menuBar3);menuIt1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {testArea.setText(null);}});menuIt2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {final FileDialog fd = new FileDialog(new JFrame(), "查找文件",FileDialog.LOAD);fd.setVisible(true);if (fd.getDirectory() != null && fd.getFile() != null) {testArea.setText(null);url = fd.getDirectory() + fd.getFile();try {BufferedReader in = new BufferedReader(new FileReader(url));for (int i = 0;; i++) {testArea.append(in.readLine());if (in.read() == -1) {break;} elsecontinue;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}});menuIt3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (url==null) {url="D:\\文本编辑器文本文档.txt";}File f = new File(url);BufferedWriter out = null;try {out = new BufferedWriter(new FileWriter(url));f.createNewFile();out.append(testArea.getText());out.flush();} catch (IOException e1) {e1.printStackTrace();} finally {try {out.close();} catch (IOException e1) {e1.printStackTrace();}}}});menuIt4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {FileDialog fd = new FileDialog(new JFrame(), "保存文本",FileDialog.SAVE);fd.setVisible(true);if (url!=null) {File f = new File(url);BufferedWriter out = null;try {f.createNewFile();out = new BufferedWriter(new FileWriter(url));out.append(testArea.getText());out.flush();} catch (IOException e) {e.printStackTrace();} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}}}});menuIt5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {str=testArea.getSelectedText();stringSelection=new StringSelection(str);clipboard.setContents(stringSelection, null);}});menuIt6.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {str=testArea.getSelectedText();stringSelection=new StringSelection(str);clipboard.setContents(stringSelection, null);int start=testArea.getSelectionStart();int end=testArea.getSelectionEnd();testArea.replaceRange( null,start,end);}});menuIt7.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {transferable=clipboard.getContents(this);flavor=DataFlavor.stringFlavor;if (transferable.isDataFlavorSupported(flavor)) {int start=testArea.getSelectionStart();int end=testArea.getSelectionEnd();testArea.replaceRange( null,start,end);int pos=testArea.getCaretPosition();try {str=(String)transferable.getTransferData(flavor);testArea.insert(str, pos);} catch (UnsupportedFlavorException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}}}});menuIt8.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null,"原创");}});return pane;}JTextArea testArea;private JScrollPane createAreaPane() {JScrollPane pane = new JScrollPane();pane.setBorder(new TitledBorder("编辑区域"));testArea = new JTextArea();testArea.setFont(new Font("宋体", Font.BOLD, 13));testArea.setLineWrap(true);pane.getViewport().add(testArea);return pane;}public static void main(String[] args) {NotepadDemo td = new NotepadDemo();td.setVisible(true);}}。

java课程设计报告-java课程设计

java课程设计报告-java课程设计

Java 课程设计报告题目:文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计的目的与要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3二、综合设计正文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31. 系统分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31.1系统开发背景、开发范围、建设目标与必要性开发⋯⋯⋯⋯⋯⋯⋯⋯31.2需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.1功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.2系统运行环境与开发工具⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43 . 系统实施⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 3.1 源程序⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43.2 .系统测试及部分截图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12三、综合设计总结或结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13四、参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java 程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。

同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。

二、综合设计正文1系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。

1.2需求分析程序设计主要分为两大部分:简单 GUI 设计和程序功能设计。

通过 GUI 设计实现图形用户界面,提供图形菜单,方便用户操作。

使用Java 语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出的程序。

java第三次作业题目_2017

java第三次作业题目_2017

第三次大作业(1) 编程实现一个文本编辑器,使其具有新建、打开、保存文件等基本功能,还可额外增加设定文字颜色、字行以及编辑区域的背景颜色等功能。

(2) 光盘借阅管理设计以下几个类:光盘类:用户类:借阅记录类,包括下列模块:1) 新建、修改、删除光盘信息;2) 新建、修改、删除用户信息;3) 光盘借阅/归还4) 查询光盘名称,用户的借阅历史;要求:基于JFrame窗体设计、使用菜单和SQL Server数据库补充:类似的题目大家还可以选择学生信息管理系统、超市收银系统、仓库管理系统、医院挂号系统、ATM系统等。

这些系统至少有权限管理,如用户、管理员权限。

信息的增删改查功能;报表打印功能等。

(3) 实现一个Java版即时聊天程序。

【功能提示】1)用户登录及登录验证:用户能够使用固定帐号(帐号程序内置即可,无需完成额外的注册功能)登录系统,系统能对预定的帐号、密码进行验证;2)聊天功能:能够在两台以上的机器上登录运行程序,能使用不同帐号完成在线的即时消息发送(聊天);3)文件传输;4)好友管理:能够显示好友列表,并能够添加、修改、删除好友;5)在线、离线状态显示:能够显示好友的在线状态或离线状态。

6)聊天记录管理:能够以文件或数据库形式将聊天记录进行存储,并能打开、显示、删除所存储的聊天记录。

补充:其它可选的还包括Java多人在线网络聊天室、B/S结构的聊天系统等。

编程实现一个简单的网络通信工具,能够进行点对点的消息通信以及文件传输等功能。

(4) 或者自己感兴趣的内容!要求:1)以上题目,至少完成一题。

2)程序上机调试通过,调试通过后才登记;3)把程序、运行结果和感想体会严格按照格式要求写在A4纸上提交,至少四页,另加封面。

本作业占70%的考核成绩。

Java写的简单文本编辑器代码(word文档良心出品)

Java写的简单文本编辑器代码(word文档良心出品)

import java.awt.*;import java.awt.eve nt.*; import java.io.*;public class Notepad /*impleme nts Action Liste ner , MouseListe ner ,MouseMoti on Liste ner , Win dowListe ner , ItemListe ner , KeyListe ner, TextListe ner */ {//成员变量 private Menultem miNew , miOpen , miSave , miSaveAs , miExit ; // 文 件菜单项:新建,打开,保存,另存为,退出private Menultem miCut , miCopy , miPaste , miDelete ;//编辑菜单项: 剪切,复制,粘贴,删除private Menultem miFont , miLowtoCapital , miCapitaltoLow , miEncrypt miDisencrypt ; //格式菜单项:字体 privateMenultemmiAboutNotepad ; // 帮助菜单项:关于记事本private Frame mainFrame ; // 主框架 private Men uBar mb ; // 菜单条private Me nu mFile , mEdit , mFormat式,帮助mHelp ; //菜单:文件,编辑,格 private TextAreata ; //文本区private StringtempString ; 〃临时字符串,用于存储需要复制粘贴的字符串private boolea n textValueCha nged = false privateint id_fo nt//字体Stri ng fileName = "" ; //上次保存后的文件名和地址//构造函数public Notepad(){//框架main Frame = new Frame ( "Notepad v0.99 by Laun chi ng" );mb = new Men uBar (); ta = new TextArea (30 ,60); ta .setFont( new Font ( "Times New Rome" , Font. PLAIN , 15)); ta .setBackground( new Color(0,250,200)); //菜单条 mFile = mEdit =new Menu ( new Menu("文件"); "编辑");mFormat = new Menu ( " 格式t" ); mHelp = new Menu ( " 帮助" );//" 文件"miNew = new MenuItem ( " 新建" ); miOpen = new MenuItem ( " 打开" ); miSave = new MenuItem ( " 保存" );miSaveAs = new MenuItem ( " 另存为" ); miExit = new MenuItem ( "退出" );//" 编辑"miCut = new MenuItem ( " 剪切" ); miCopy = new MenuItem ( " 复制" ); miPaste = new MenuItem ( " 粘贴" ); miDelete = new MenuItem ( " 删除" );//" 格式"miFont = new MenuItem ( "Font" );miLowtoCapital = new MenuItem( "Low to Capital"miCapitaltoLow = new MenuItem( "Capital to Low"miEncrypt = new MenuItem( "Encrypt" ); miDisencrypt = new MenuItem( "Disencrypt" );//" 帮助"miAboutNotepad = new MenuItem ( " 关于Notepad" );// 添加文件菜单项mFile .add( miNew );mFile .add( miOpen );mFile .add( miSave );mFile .add( miSaveAsmFile .add( miExit );// 添加编辑菜单项// 添加帮助菜单项mHelp .add( miAboutNotepad );); );mEdit .add( mEdit .add( mEdit .add( mEdit .add( miCut ); miCopy ); miPaste ); miDelete );// 添加格式菜单项mFormat .add( mFormat .add( mFormat .add( mFormat .add( mFormat .add( miFont ); miLowtoCapital miCapitaltoLow miEncrypt ); miDisencrypt);););//菜单条添加菜单 mb.add( mFile ); mb.add( mEdit ); mb.add( mFormat ); mb.add( mHelp );//框架添加菜单条mai nFrame .setMe nuBar( mb ); //初始字符串赋为空 tempString ="";//添加文本区main Frame .add( ta , BorderLayout. CENTER);main Frame .setSize(800,500);main Frame .setLocati on( 100 ,100); main Frame .setResizable( true mainFrame .setVisible( true ); //ma in Frame.pack();增加监视器 ////////////////////// //主框架mai nFrame .addWi ndowListe ner( new Win dowAdapter (){ //关闭窗口public void win dowClos in g(Wi ndowEve nt e) { System. exit (0); } });//文本区ta .addKeyListener( new KeyAdapter(){ public void KeyTyped(KeyEvent e){ _________textValueChanged = true ; //键盘按键按下即导致文本修改 }});////////////////" 文件"菜单:////////////////////////新建miNew .addActionListener( new ActionListener(){ public void action Performed(Act ion Eve nt e){//起始位置 );//不可更改大小 /////////////////////////ta .replaceRange( "",0 , ta .getText().length()); //清空文本区的内FileDialog d=new FileDialog( mai nFrame FileDialog. LOAD );II 打开文件对话框d.addWi ndowListe ner( new Win dowAdapter(){public void wi ndowClosi ng(Wi ndowEve nt ee){ System. exit (0);}});d.setVisible(true );"open file" ,//关闭文件对话框窗口//建立新文件fileName = d.getDirectory()+d.getFile(); //得到文件名char ch[] = new char [( int )f.length()]; 符数组III 用此文件的长度建立一个字try II 异常处理 {II 读出数据,并存入字符数组ch 中 BufferedReader bw = new BufferedReader( bw.read(ch);bw.close(); }catch ( FileNotFoundException fe ){ System. out .println( "file not found" ); System. exit (0); }catch ( lOException ie){ System. out .println( "IO error" ); System. exit (0); } new FileReader(f));String s =new String (ch);ta .setText(s); II 设置文本区为所打开文件的内容fileName = "" ;//文件名清空 } });//打开miOpen .addActionListener( new ActionListener(){ public void action Performed(Act ion Eve nt e) { File f =new File( d.getDirectory()+d.getFile());});// 保存miSave .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvente) {if ( fileName .equals( ) ){ // 如果文件没有被保存过, 即文件名为空FileDialog d= new FileDialog( mainFrame , "save file" , FileDialog. SAVE ); // 保存文件对话框d.addWindowListener( new WindowAdapter(){ // 关闭文件对话框窗口public voidwindowClosing(WindowEvent ee){System. exit (0);}});d.setVisible( true );String s = ta .getText(); // 得到所输入的文本内容try // 异常处理{File f = new File( d.getDirectory()+d.getFile()); // 新建文件fileName = d.getDirectory()+d.getFile(); // 得到文件名BufferedWriter bw = new BufferedWriter( new FileWriter (f)); // 输入到文件中bw.write(s , 0 , s.length());bw.close();}catch (FileNotFoundException fe_){System. out .println( "file not found" );System. exit (0);}catch ( IOException ie_){System. out .println( " IO error" );System. exit (0);}}else // 如果文件已经保存过{String s = ta .getText(); // 得到所输入的文本内容try // 异常处理{File f = new File( fileName ); // 新建文件BufferedWriter bw = new BufferedWriter( new FileWriter (f)); // 输入到文件中bw.write(s , 0 , s.length());bw.close();}catch (FileNotFoundException fe_){System. out .println( "file not found" );System. exit (0);}catch ( IOException ie_){System. out .println( " IO error" );System. exit (0);}}}});// 另存为miSaveAs .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvente) {FileDialog d= new FileDialog( mainFrame , "save file" , FileDialog. SAVE ); // 保存文件对话框d.addWindowListener( new WindowAdapter(){ // 关闭文件对话框窗口public voidwindowClosing(WindowEvent ee){System. exit (0);}});d.setVisible( true );String s = ta .getText(); // 得到所输入的文本内容try // 异常处理{File f = new File( d.getDirectory()+d.getFile()); // 新建文件BufferedWriter bw = new BufferedWriter( new FileWriter (f)); // 输入到文件中bw.write(s , 0 , s.length());bw.close();编辑" 菜单: //////////////////// // 剪切miCut .addActionListener( public voidactionPerformed(ActionEvent e){ tempString = ta .getSelectedText();tempString 中StringBuffer tmp = new StringBuffer ( 文本 int start = ta .getSelectionStart();int len = ta .getSelectedText().length(); 度tmp.delete( start , start+len); /// 删除所选中的字符串 ta .setText(tmp.toString()); // 用新文本设置原文本 } });// 复制miCopy .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){tempString = ta .getSelectedText(); /// 得到要复制的内容 , 暂存在 tempString 中 } });// 粘贴miPaste .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){System. System. }catch { System. out .println( exit (0); "file not found"( IOException ie_) out .println( " IO error"System.} exit (0);} }););miExit public System. } });.addActionListener( new ActionListener(){ void actionPerformed(ActionEvent e){ exit (0);/// 退出程序////////////////" new ActionListener(){/// 得到要复制的内容 , 暂存在ta .getText()); // 临时存储 // 得到要删除的字符串的起始位置// 得到要删除的字符串的长catch (FileNotFoundException fe_){// 退出////////////////" 格式 " 菜单: ////////////////////// 字体miFont .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){final Dialog d = new Dialog ( mainFrame , "Font" ); // 新建对话框 d.setLocation( 250 ,250);// 起始位置中部分面板new List (6 , false ); // 字体列表"Plain" ); /// 普通字体 "Bold" ); /// 粗体 "Italic" ); // 斜体////////////////////////// 上部分面板Label l_font = new Label ( "font" ); //font 标签Panel p_1 = new Panel();p_1.add(l_font);p_1.setVisible(true );d.setLayout( new BorderLayout()); // 表格布局 StringBuffer tmp = 文本int start = tmp.insert(start , ta .setText(tmp.toString()); } });new StringBuffer ( ta .getSelectionStart();tempString // 删除miDelete .addActionListener( ta .getText()); // 得到要粘贴的位置 查入要粘贴的内容); // // 用新文本设置原文本 new ActionListener(){ public void actionPerformed(ActionEvent e){ StringBuffer tmp = new StringBuffer (文本int start = ta .getSelectionStart(); int len = ta .getSelectedText().length(); tmp.delete( start , start+len); ta .setText(tmp.toString()); } });// 临时存储ta .getText()); // 临时存储// 得到要删除的字符串的起始位置 //得到要删除的字符串的长/// 删除所选中的字符串// 用新文本设置原文本////////////////////////// List font_list =// 添加字体项目font_list.add( font_li st.add( font_list.add(font_list.addItemListener(增加监视器new MyItemListener_font() ); // 字体Panel p_2 = new Panel();p_2.add(font_list);p_2.setVisible( true );////////////////////////// Button ok = new Button ( ok.addActionListener(下部分面板"OK" );new ActionListener(){public voidd.dispose(); } });ok.setSize(actionPerformed(ActionEvent e){new Dimension (20 , 5) );Panel p_3 =p_3.add(ok); p_3.setVisible(new Panel(); // 下部分面板true );// 添加三个面板d.add(p_1 , BorderLayout. NORTH);d.add(p_2 , BorderLayout. CENTER);d.add(p_3 , BorderLayout. SOUTH);d.pack();d.addWindowListener( new WindowAdapter(){ public voidwindowClosing(WindowEvent ee){ d.dispose();}});// 关闭对话框窗口d.setVisible(}});true );// 小写字母转大写miLowtoCapital .addActionListener( new ActionListener(){ public voidactionPerformed(ActionEvent e){String s = ta .getText(); // 得到所输入的文本内容StringBuffer temp = new StringBuffer( "" );for ( int i = 0 ; i<s.length() ; i++){if (( int )s.charAt(i)>=97 &&( int )s.charAt(i)<=122 ){ temp.append(( char )(( int )s.charAt(i)-32));}elsetemp.append(s.charAt(i));}s = new String(temp);ta .setText(s);}});// 大写字母转小写miCapitaltoLow .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){String s = ta .getText(); // 得到所输入的文本内容StringBuffer temp = new StringBuffer( "" );for ( int i = 0 ; i<s.length() ; i++){if (( int )s.charAt(i)>=65 && ( int )s.charAt(i)<=90 ){ temp.append(( char )(( int )s.charAt(i)+32));}elsetemp.append(s.charAt(i));}s = new String(temp);ta .setText(s);}});// 加密miEncrypt .addActionListener( new ActionListener(){ public voidactionPerformed(ActionEvent e){String s = ta .getText(); // 得到所输入的文本内容StringBuffer temp = new StringBuffer( "" );for ( int i = 0 ; i<s.length() ; i++){if (s.charAt(i)>=40 && s.charAt(i)<=125){if (i%2==0){temp.append(( char )(s.charAt(i) + 1 ));} else temp.append(( char )(s.charAt(i) - 1 ));} else temp.append(s.charAt(i));} s = new String(temp);ta .setText(s);}});// 解密miDisencrypt .addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){String s = ta .getText(); // 得到所输入的文本内容StringBuffer temp = new StringBuffer( "" );for ( int i = 0 ; i<s.length() ; i++){if (s.charAt(i)>=40 && s.charAt(i)<=125){if (i%2==0){temp.append(( char )(s.charAt(i) - 1 ));}elsetemp.append(( char )(s.charAt(i) + 1 ));}elsetemp.append(s.charAt(i));}s = new String(temp);ta .setText(s);}});帮助 " 菜单: ////////////////////// 关于记事本miAboutNotepad .addActionListener( new ActionListener(){ public voidactionPerformed(ActionEvent e){final Dialog d = new Dialog ( mainFrame , "AboutNotepad"建对话框TextArea t = new TextArea( "\nwelcome to use Notepad " + +"Copyright@Launching " + "\n\n" + "free software" + "\n\n" "v0.99" ); // 添加标签t.setSize( new Dimension ( 5 , 5));t.setEditable( false );d.setResizable( false ); // 不可调整大小 d.add(t);d.pack();d.addWindowListener( new WindowAdapter(){ // 关闭对话框窗口 public voidwindowClosing(WindowEvent ee){d.dispose();}});d.setLocation( 100 ,250); // 起始位置d.setVisible( true );}});}class MyItemListener_font implements ItemListener { // 字体监听器 public void itemStateChanged(ItemEvent e) {id_font = ((java.awt.List)e.getSource()).getSelectedIndex(); ////////////////" ); // 新"\n\n" +switch ( id_font ){case 0:{ta .setFont( new Font( "Times New Roman" ,Font. PLAIN , ta .getFont().getSize()) ); // 普通文字break ;}case 1:{ta .setFont( new Font( "Times New Roman" , Font. BOLD , ta .getFont().getSize()) ); // 粗体文字break ;}case 2:{ta .setFont( new Font( "Times New Roman" ,Font. ITALIC , ta .getFont().getSize()) ); // 斜体文字break ;}}}}////////////////////// public static Notepad test = } 一主函数////////////////////////////// void main (Stri ngarg[]){ newNotepad();///创建记事本//////////////////////////////////////////////////////////////// }运行效果图:。

实现一个简单的文本编辑器

实现一个简单的文本编辑器

实现一个简单的文本编辑器随着数字时代的来临,我们的生活方式也越来越数字化。

越来越多的人开始将工作和娱乐转移到电脑上,而文本编辑器成为了他们生产力的关键之一。

虽然市场上已经有很多成熟的文本编辑器,但如果你想自己动手实现一个简单的文本编辑器,这也是很有意义的。

第一步,了解文本编辑器的基本功能。

文本编辑器主要用于文本的编写、修改、保存等。

编辑器的基本功能包括文件打开和新建、文本写入和修改、保存和另存为以及撤销、恢复等。

第二步,选择编程语言和工具。

要实现一个文本编辑器,需要选择合适的编程语言。

如果你想实现一个基于图形用户界面的编辑器,可以选择Java、C#等高级语言;如果想实现一个控制台下的编辑器,可以选择C/C++等语言。

在选择编程语言的同时,也需要选择合适的编程工具,如Eclipse、NetBeans、Visual Studio等。

第三步,实现编辑器的基本功能。

实现文本编辑器的基本功能可以让我们更好地理解编程的思路和技巧。

在实现编辑器时,首先需要实现文件打开和新建功能,可以使用系统的文件选择框或编写自己的文件选择框;其次,需要实现文本写入和修改功能,可以使用文本框或命令行等方式读入、显示和编辑文本;还需要实现保存和另存为功能,可以使用文件输入输出流将文本内容保存到磁盘上;最后,可以实现撤销、恢复等功能,使编辑器更加完善。

第四步,优化编辑器的性能和功能。

在基本功能实现后,可以通过增加功能模块和优化代码来优化编辑器的性能和功能。

例如,可以增加搜索和替换功能、增加编码和格式化功能、增加批量修改功能等。

优化代码方面,可以使用流式输入输出、多线程技术等提高程序的效率。

第五步,界面美化和交互优化。

漂亮的界面和良好的交互体验是吸引用户的重要组成部分。

在实现功能的基础上,可以通过灵活运用布局和颜色、使用快捷键等方式优化编辑器的界面美观和交互性。

例如,可以增加菜单栏、工具栏和状态栏,使用不同颜色来标识代码和注释等。

总之,实现一个文本编辑器需要付出很多的努力和时间。

文本编辑器介绍文档

文本编辑器介绍文档

JIANGXI AGRICULTURAL UNIVERSITYJAVA实训课程设计报告题目:文本编辑器学院:软件学院姓名:刘兵学号:20201549专业:软件开发年级:095 班指导教师:易文龙二0 1 1 年 6 月201.系统分析 (3)1.1 需求分析 (3)1.2 可行性研究 (4)1.3 开发及运行环境分析 (4)2.系统设计 (4)2.1系统流程图 (5)2.2系统功能模块分析 (6)3.菜单栏模块 (8)3.1 NotePad类 (8)3.2菜单栏设计 (10)3.21接口类Swing.java代码: (11)3.22菜单栏类Swing_MenuBar.java代码: (11)3.23菜单栏事件类JMenuBar_Listener.java代码: (14)3.3 工具栏 (19)3.31构建工具栏Swing_JToolBar.java类代码: (19)3.32工具栏事件响应类JToolBar_Listener.java代码: (25)3.4 弹出式菜单栏 (31)3.41弹出式菜单栏NotepadPopupMenu.java代码: (31)3.42弹出式菜单栏事件处置类JPopupMenu_Listener.java代码: (34)3.5 文本面板JTextPane和总面板JPanel (35)3.51JTextPane代码: (36)3.52 JPanel的代码: (38)3.6 相关子界面 (39)3.61颜色选择类Swing_JColorDialog.java代码: (39)3.62字体大小设置Swing_JFontSize.java代码: (43)3.63保留文本Swing_SavingDialog.java代码: (47)3.64帮忙Swing_Help.java代码: (49)3.65关于Swing_About.java代码: (51)3.66撤销Swing_Undo.java代码: (54)3.67提示Swing_JDialog.java代码: (56)3.7 相关功能截图 (59)3.71编辑功能截图 (59)3.72保留功能截图 (60)3.73文件打开功能截图 (62)3.74文字加粗、斜体、下划线功能 (62)3.75文本对齐方式功能截图 (64)3.76文字变色、变大小功能截图 (65)3.77文本背景颜色更改功能截图 (67)3.78文本编辑器的帮忙和关于功能截图 (68)1.系统分析1.1 需求分析现今时期,随着科技的进展,人们对信息和文字的处置愈来愈高,要求能有一个高效率、便利的办公软件,来处置繁琐的信息和文字。

Java课设_文本编辑器

Java课设_文本编辑器

Java课设_文本编辑器预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制目录第一章绪论 (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语言是一个完全面向对象的语言,并且对软件工程技术有很强分得支持:Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型:对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏:类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。

2、平台无关性严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字限,最后的目标码都是一致:的:Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行是系统,Java程序就可在任意的处理器上运行。

这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

3、安全问题Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性;毁灭系统资源;消耗系统资源;挖掘系统或个人机密;骚扰正常工作的进行。

4、多线程单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情;其他大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持);Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序;多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作;通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。

文本编辑器源代码

文本编辑器源代码
}
catch (IOException ex) {
jlblStatus.setText("Error opening " + file.getName());
}
}
/** Save file with specified File instance */
jta.append(new String(b, 0, b.length));
in.close();
// Display the status of the Open file operation in jlblStatus
jlblStatus.setText(file.getName() + " Opened");
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==menuItem11)
open();
else if(e.getSource()==menuItem12)
save();
else if(e.getSource()==menuItem13)
JFileChooser.APPROVE_OPTION) {
save(jFileChooser1.getSelectedFile());
}
}
private void open(File file) {
try {
// Read from the specified file and store it in jta
menu2.add(menuItem22);
menuItem31=new JMenuItem("关于");

JAVA程序设计题: 文本编辑器设计资料

JAVA程序设计题: 文本编辑器设计资料

JAVA程序设计题:文本编辑器设计【问题描述】实现类似Windows操作系统“记事本”的功能。

它是一个简单的文本文档编辑器,可以创建、查看或编辑文本文件。

【实验目的】要求学生能熟练使用基于Swing的GUI设计,熟练使用常用组件和容器,理解java事件处理机制,会查看API documentation完成设计任务,熟练文件流的操作。

【基本功能】设计一个文本编辑器,通过菜单组件可以创建、查看或编辑文本文件。

增加对文件的存贮、剪切和黏贴等功能功能的其他扩展package com.huangyilun.work;import java.awt.*;import java.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import javax.swing.*;public class Notice_B08010332 extends JFrame {public static void main(String[] args) {new Notice_B08010332();}public Notice_B08010332() {super("新建文本文件");setUpUIComponent();setUpEventListener();setVisible(true);this.showForm();}private void showForm(){//侦听窗口关闭操作setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose();System.exit(0);}});}private void setUpUIComponent() {setSize(640, 480);// 菜单栏JMenuBar menuBar = new JMenuBar();// 设置「文件」菜单JMenu fileMenu = new JMenu("文件");menuOpen = new JMenuItem("打开");// 快捷键设置menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));menuSave = new JMenuItem("保存");menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));menuSaveAs = new JMenuItem("另存为");menuClose = new JMenuItem("关闭");menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));fileMenu.add(menuOpen);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuSave);fileMenu.add(menuSaveAs);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuClose);// 设置「编辑」菜单JMenu editMenu = new JMenu("编辑");menuCut = new JMenuItem("剪切");menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));menuCopy = new JMenuItem("复制");menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));menuPaste = new JMenuItem("粘贴");menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));editMenu.add(menuCut);editMenu.add(menuCopy);editMenu.add(menuPaste);menuBar.add(fileMenu);menuBar.add(editMenu);setJMenuBar(menuBar);// 文字编辑区域textArea = new JTextArea();textArea.setFont(new Font("宋体", Font.PLAIN, 16));textArea.setLineWrap(true);JScrollPane panel = new JScrollPane(textArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);Container contentPane = getContentPane();contentPane.add(panel, BorderLayout.CENTER);// 状态栏stateBar = new JLabel("未修改");stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder());contentPane.add(stateBar, BorderLayout.SOUTH);popUpMenu = editMenu.getPopupMenu();}private void setUpEventListener() {// 按下窗口关闭钮事件处理addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {closeFile();}});// 菜单- 打开menuOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {openFile();}});// 菜单- 保存menuSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {saveFile();}});// 菜单- 另存为menuSaveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { saveFileAs();}});// 菜单- 关闭文件menuClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { closeFile();}});// 菜单- 剪切menuCut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cut();}});// 菜单- 复制menuCopy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {copy();}});// 菜单- 粘贴menuPaste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {paste();}});// 编辑区键盘事件textArea.addKeyListener(new KeyAdapter() {public void keyTyped(KeyEvent e) {processTextArea();}});// 编辑区鼠标事件textArea.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(editMenu, e.getX(), e.getY());}public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});}private void openFile() {if (isCurrentFileSaved()) { // 文件是否为保存状态open(); // 打开} else {// 显示对话框int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) {// 确认文件保存case JOptionPane.YES_OPTION:saveFile(); // 保存文件break;// 放弃文件保存case JOptionPane.NO_OPTION:open();break;}}}private boolean isCurrentFileSaved() {if (stateBar.getText().equals("未修改")) {return true;} else {return false;}}private void open() {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(this);File file = chooser.getSelectedFile();currFile = file;String str = "";try{FileInputStream fileinput = new FileInputStream(file.getAbsolutePath());int x = fileinput.available();byte b[] = new byte[x];fileinput.read(b);str = new String(b);}catch(Exception e){e.printStackTrace();}if (file != null)this.textArea.setText(str);}private void saveFile() {String str = this.textArea.getText();if(currFile != null && !currFile.equals("")){try{FileWriter out = new FileWriter(currFile);out.write(str);out.close();}catch(Exception e){e.printStackTrace();}}else{saveFileAs();}stateBar.setText("已保存");}private void saveFileAs() {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(this);File file = chooser.getSelectedFile();currFile = file;String str = this.textArea.getText();if(currFile != null && !currFile.equals("")){try{FileWriter out = new FileWriter(currFile);out.write(str);out.close();}catch(Exception e){e.printStackTrace();}}stateBar.setText("已保存");}private void closeFile() {// 是否已保存文件if (isCurrentFileSaved()) {// 释放窗口资源,而后关闭程序dispose();} else {int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) {case JOptionPane.YES_OPTION:saveFile();break;case JOptionPane.NO_OPTION:dispose();}}}private void cut() {textArea.cut();stateBar.setText("已修改");popUpMenu.setVisible(false); }private void copy() {textArea.copy();popUpMenu.setVisible(false); }private void paste() {textArea.paste();stateBar.setText("已修改");popUpMenu.setVisible(false); }private void processTextArea() { stateBar.setText("已修改");}private JMenuItem menuOpen; private JMenuItem menuSave; private JMenuItem menuSaveAs; private JMenuItem menuClose; private JMenu editMenu; private JMenuItem menuCut; private JMenuItem menuCopy;private JMenuItem menuPaste;private JTextArea textArea;private JLabel stateBar;private JPopupMenu popUpMenu;private File currFile;}。

学习使用文本编辑器进行程序编写

学习使用文本编辑器进行程序编写

学习使用文本编辑器进行程序编写随着计算机技术的不断发展,编程已经成为了一门越来越受欢迎的技能。

对于想要从事软件开发或者计算机科学相关领域工作的人来说,学习使用文本编辑器进行程序编写是非常重要的一步。

本文将介绍如何使用文本编辑器进行程序编写的基本知识和技巧。

一、选择适合的文本编辑器在开始学习使用文本编辑器进行程序编写之前,首先需要选择一款适合自己的文本编辑器。

目前市面上有很多种文本编辑器可供选择,如Sublime Text、Visual Studio Code、Atom等。

这些文本编辑器具有不同的特点和功能,可以根据个人的需要来选择合适的一款。

二、掌握基本操作学习使用文本编辑器进行程序编写的第一步是要掌握基本的操作技巧。

包括打开文件、保存文件、复制粘贴、撤销重做等基本操作。

这些操作虽然简单,但是却是进行程序编写的基础。

三、了解常用功能除了基本操作,文本编辑器还具有一些常用的功能,如代码高亮、自动补全、代码折叠等。

这些功能可以大大提高编程的效率和准确性。

在学习过程中要注意了解并学会使用这些功能。

四、学习使用快捷键快捷键是文本编辑器中的一种快速操作方式。

熟练掌握常用的快捷键,可以极大地提高编程的速度和效率。

比如在Sublime Text中,Ctrl+S是保存文件的快捷键,Ctrl+C是复制,Ctrl+V是粘贴,Ctrl+Z是撤销操作等。

在使用文本编辑器进行程序编写时,尽量使用快捷键操作,可以节省大量的时间。

五、采用良好的编码习惯良好的编码习惯是程序员必备的素质之一。

在使用文本编辑器进行程序编写时,要注意缩进、命名规范、代码注释等细节。

这些习惯可以让代码更加易读、易于维护和共享。

六、与编程语言相结合不同的编程语言有不同的语法和特点,使用文本编辑器进行程序编写时,需要与具体的编程语言相结合。

比如在编写Java程序时,可以使用Sublime Text等文本编辑器,并结合Java的语法规则编写代码。

总结学习使用文本编辑器进行程序编写是一项重要的技能,对于想要从事软件开发或者计算机科学相关领域工作的人来说尤为重要。

JAVA程序设计作业-文件编辑器开发文档

JAVA程序设计作业-文件编辑器开发文档

JAVA文件编辑器开发文档姓名:xx学号:2sss班级:20sss目录一、需求分析 (2)二、概要设计 (2)三、详细设计 (2)1. TestFrm类 (2)2. MainFrm类 (3)3. FileFrm类 (3)四、开发任务分工 (5)一、需求分析1.通过可视化界面完成和用户的交互;2.用户启动程序时需要输入用户名,密码,输入正确后打开主界面;3.能够打开二进制可执行文件,ASCII码文件和图片文件;4.能够将读取到的文件内容以正确的格式在窗口中显示出来(二进制的显示成为十六进制数,ASCII码文件显示为字符串,图像文件显示出图像的内容);5.能够同时用多个窗口打开多个文件,并能够对这多个窗口进行统一管理;6.能够修改ASCII文件和二进制文件的内容,并进行保存。

二、概要设计程序由TestFrm(登录界面类)、MainFrm(主界面类)、FileFrm(文件界面类)三个类构成。

TestFrm类的作用是显示登录界面,连接数据库验证登录信息,若登录成功则构造一个MainFrm类对象,并关闭自己的界面。

MainFrm类的作用是显示主界面,构造FileFrm类对象,并管理多个已打开的FileFrm类对象。

FileFrm类的作用是显示文件界面,打开文件,判断文件类型并显示文件内容,并提供编辑、保存的功能。

三、详细设计1. TestFrm类TestFrm类包含仅构造函数TestFrm()、主函数public static void main(String[] args)两个方法,界面中用到的组件均在构造函数中定义。

主函数public static void main(String[] args)仅用于创建一个TestFrm类的对象。

构造函数TestFrm()中包含了登录界面设计和“登录”按钮的响应函数。

登录界面如图1所示。

“登录”按钮响应函数首先读取输入的用户名和密码信息,然后连接到根目录下的数据库“数据库1.mdb”,与数据库中存储的用户名、密码进行比较。

Java第三次作业题目

Java第三次作业题目

第1题:计算器设计一个计算器【最大选题人数:10】第2题:一个简单的算法演示程序1.选择一个算法(提供选择见下)、利用各种方法(图形、界面)演示算法的计算过程。

2.可以进行手动演示,也可以自动步进式演示。

3.允许用户设置算法的各个输入参数,以及自动步进式演示中的时间间隔。

4.不同的算法输入要求见下:要求:使用图形界面,要符合日常软件使用规范设置菜单和界面。

【最大选题人数:12】参考算法:1.最小生成树算法:Prim算法、Kruskal算法。

允许一下方式输入一个图形:绘制图形、输入邻接矩阵、输入边及其关联的顶点。

2.单源最短路算法:Disjkstra算法。

允许一下方式如数一个图形:绘制图形、输入邻接矩阵、输入边及其关联的顶点。

3.最优编码算法:Huffman编码算法。

允许用户输入一段英文文字,或者打开一个txt文档(英文内容),据此文档内容进行编码。

要求动态列出每个字符的出现概率统计结果以及对应编码。

4.演示汉诺塔问题。

(/p-42606464.html,可参考)5.其他可供演示的具有一定难度的算法:如关键路径问题、有向图的极大连通分支等。

第3题:时间日历设计一个时间日历,交互性要求:能够设置时间。

【最大选题人数:6】例如:其它功能可自行扩展。

第4题:一个简易的图书馆管理程序设计一个具有基本功能的图书馆管理程序。

【功能提示】【可选人数:8】(1) 图书的管理使用B-树数据结构(2) 管理图书功能:增加、删除、修改某些图书的信息(3) 借书、还书功能。

其它功能可自行扩展。

第5题:音乐播放器制作一个音频文件播放器,能够播放多种音频格式的文件。

【功能提示】【可选人数:8】(1) 实现为Applet小程序(2) 实现开始、暂停、停止等播放控制(3) 维护一个或多个播放列表(4)能够从Internet下载歌曲并播放。

其它功能可自行扩展。

第6题:扫雷游戏制作一个扫雷游戏。

【最大选题人数:6】(只需实现Windows自带扫雷游戏的部分功能,如只需实现初级及中级,无需高级、自定义)其它功能可自行扩展(如实现高级、自定义)第7题:简易绘图软件设计一个简易的绘图软件,并且能将绘图结果保存为jpg和bmp格式【最大选题人数:8】第8题:文本编辑器制作一个简单的文本编辑器,交互性要求:【最大选题人数:8】(1) 可输入文字(仅要求英文及标点符号)(2) 实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正……(3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件第9题:学生成绩管理系统设计一个简易的学生成绩管理系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《Java语言》课程期末作业
题目第6题:文本编辑器
学院计算机学院
专业网络工程
班别13级(3 )班
学号
姓名
2015年06月17日
一、课程题目
制作一个简单的文本编辑器,交互性要求:【最大选题人数:5】
(1) 可输入文字(仅要求英文及标点符号)
(2) 实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正……
(3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件
二、题目分析与设计
1. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。

开发环境:Eclipse
2. 论述题目的需求。

给出软件功能架构图。

本题目要求实现类似于一个记事本的文本编辑器功能。

要能够输入文字,能够实现一些常用的编辑功能,可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件。

本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面:
① 菜单栏中有“文件”,“编辑”,“字体”三个主菜单。

②“文件”菜单有“新建”,“打开”,“保存”三个菜单项:分别用于新
建文件,打开文件,保存文件。

③“编辑”菜单中有“复制”“剪切”“粘贴”“查找”“替换”五个菜单项:用于实现复制所选文字,剪切所选文字,粘贴文字,查找,替换等功能。

④“字体”中有“格式”一个菜单项:用来控制文本框中文本的字体类型功能;
软件功能架构图:
3. 论述界面设计过程,指出其设计上的创意及组件的布局策略。

这个框架主要运用盒子布局对象和grid布局对象操作。

对于文本编辑器的菜单组件如下。

“文件”菜单里:
“编辑”菜单里“字体”菜单里
4. 论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。

不得以粘贴代码的方式代替设计部分。

首先,自定义一个editor类,该类继承了JFrame类和ActionListener、ItemListener 接口。

在主类的主方法中,用editor创建一个对象bianji。

在editor的构造方法中设计好第一个界面的布局和组件。

设计一个菜单条组件,
添加“文件”、“编辑”、“格式”三个菜单,“文件”菜单下又添加“新建”、“打开”、“保存”菜单项;在“编辑”菜单下又添加“复制”、“粘贴”、“剪切”、“查找”、“替换”菜单项;在“格式”下又添加“字体”菜单项。

所有菜单项都添加ActionListener监视器,在editor中重写public void actionPerformed(ActionEvent e)方法。

由于添加了ActionListener监视器的菜单项很多,当它们被点击时都会触发系统自动生成ActionEvent对象,event对象会自动调用editor里面的actionPerformed方法,对触发进行反应处理,为了能对不同的菜单项点击有不同的反应,那么要在actionPerformed方法中对事件源进行区分判断,从而不同的事件源有不同的反应,所以在actionPerformed中用e.getSource对事件源进行判断,用if else结构进行不同的事件源不同的处理方法。

自定义newfile()、openfile()、savefile()方法,对应“新建”、“打开”、“保存”三个事件源的处理。

在openfile()中,新建一个文件对话窗口showOpenDialog,建立一个文件字节输入流和缓冲输入流,缓冲输入流按行读取文件内容,然后添加到文本区中。

在savefile()中,新建一个文件对话框showSaveDialog,建立一个文件字节输出流和缓冲输出流,把文本区的字符串写到用户选择的文件中。

在newfile()方法中,先调用savefile()方法,把用户当前正在编辑的文本保存好先。

用户保存后再让文本区组件调用setText()方法把文本内容设置为null。

从而达到清理文本区的效果。

对应“复制”、“粘贴”、“剪切”菜单项,添加调用文本区的copy()、paste()、cut ()方法,把文本区的内容复制到系统粘贴板,把粘贴板的内容粘贴到文本区。

事件源是“查找”菜单项时,新建一个窗口,新窗口添加“查找”按钮,和一个文本框,用来输入要查找的内容。

按钮添加ActionListener监视器。

点击“查找”按钮后,用户在文本框输入文本,文本框调用getText()方法读取字符串作为模式对象,建立一个匹配对象,文本区调用getText()方法得到字符串,匹配对象调用find()方法在文本区字符串中查找模式对象中的字符串,找到后,匹配对象再调用start()、end()方法,得到文本区字符串中与模式对象匹配的子字符串序列的开始位置和终止位置。

文本区再调用select()方法把文本区的子字符串显示出来。

倘若没有找到要查找的内容,则会弹出一个警告窗
口。

点击“替换”菜单项后,新建一个新窗口,添加“替换”按钮和两个文本框,一个用来输入替换前的内容,一个用来输入替换后的内容。

当用户在文本框中输入替换前的内容,该内容的字符串作为模式对象,建立一个匹配对象,匹配对象调用find ()方法,找到文本区中的子字符串,然后文本区再调用replaceRange()方法替换文本,replaceRange()中参数是用户输入的替换后的字符串、子字符串的开始位置、子字符串的终止位置。

倘若在文本区中没有找到要替换前的文本内容,那么将弹出一个警告窗口。

“字体”菜单项是个下拉列表,添加ItemListener监视器,用GraphicsEnvironment 对象ge=GraphicsEnvironment.getLocalGraphicsEnvironment();得到电脑系统里的所有字体类型,ge对象调用方法getAvailableFontFamilyNames()得到字体类型的名字,并把名字存放到字符串数组中,然后下拉列表组件添加字符串数组中的字体类型名字。

当用户在下拉列表中选择了一个字体时,触发ItemEvent事件对象,事件对象通知监视器,监视器实现接口回调,接口中自定义了方法,设置一个字体对象,该对象是用户选择的字体类型,然后文本区调用setFont方法把文本区的内容都设置成该字体类型。

三、测试分析
1.打开text.txt文件
2.点新建,再写入“你好,广东工业大学”,如图
3.复制粘贴测试
4.查找测试
5.替换
6.字体转换
附录:源代码
源代码7个包,2个类
黎美婵——《Java 语言》课程期末作业
11。

相关文档
最新文档