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);}}。

  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。

相关文档
最新文档