java专业技能实训.docx
- 文档编号:14474745
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:19
- 大小:58.05KB
java专业技能实训.docx
《java专业技能实训.docx》由会员分享,可在线阅读,更多相关《java专业技能实训.docx(19页珍藏版)》请在冰点文库上搜索。
java专业技能实训
东北石油大学
专业技能实训
(二)
课程Java程序设计
题目制作一个文本编辑器
学院数学与统计
专业班级信计14-2
学生姓名沈小伟
学生学号141001140228
指导教师李晓薇
2017年7月28日
东北石油大学专业技能实训任务书
课程Java程序设计
题目制作一个文本编辑器
专业信计14-2姓名沈小伟学号141001140228
主要内容、基本要求、主要参考资料等
主要内容:
设计一个类似于Windows记事本的Java程序。
可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作,在文本中能够插入对象。
简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。
能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。
主要要求:
1.独立完成,并提交一篇实训报告。
2.论文的主要内容包括:
所研究的6-8个实验题目所属分类的研究现状,常用技术,实验案例等等;要求有综合性,技术性。
必要的计算机程序。
3.文档格式:
参照《东北石油大学课程设计撰写规范》和《专业技能实训》实践大纲。
4.实训以答辩方式进行考核。
主要参考资料:
[1]陈国君,陈锡祯.Java2程序设计基础[M].北京:
清华大学出版社;2006.8
[2]袁海燕.Java实用程序设计100例[M].北京:
人民邮电出版社;2006.12:
30-58
[3]朱站立、沈伟.Java程序设计实用教程[M].电子工业出版社;;2008.11:
228-251
[4]印旻编、许伟.Java2从入门到精通[M].北京:
清华大学出版社;2006.8:
1-21
完成期限2017年7月17日-2017年7月28日
指导教师李晓威
专业负责人仲光苹
2017年7月17日
主要内容:
一、设计思路
(一)设计概念
要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。
现把我的设计思路简要介绍如下:
1、明确设计要求
首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。
在编辑菜单下的子菜单复制,可以进行对文本的复制。
在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。
而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。
而且用户也可以根据自己的需要改变窗体的大小。
2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)
(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;
(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);
(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;
(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。
3、上两步都完成以后,就进入程序的检测运行阶段即所谓的编译运行,看是否符合设计要求,是否达到理想中的那种效果,在测验阶段,要一步一步完善自己的作品直至真正意义上的完成整个设计过程。
(二)流程图
二、设计过程
1、功能介绍:
通过记事本编辑器可以实现新建、打开、保存文本文件、以及退出;同时也有对字体
的改变、对字的颜色的改变以及复制、粘贴等功能,根据自己的意愿改变窗体,实行对其的最小化、最大化、关闭等等。
2、设计步骤:
importjavax.swing.*;
importjavax.swing.event.*;
importjava.awt.*;
importjava.awt.print.*;
importjava.awt.datatransfer.*;
importjava.applet.*;
importjavax.swing.JColorChooser;
importjavax.swing.event.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.text.*;
importjavax.swing.colorchooser.*;
引用两个包:
javax、java、以及对应的方法
(1)首先创建一个公共的类名为Bjq
为文本编辑器创建一个窗体并设计标题为:
08通信
(2)班骆玉春设计的文本编辑器Bjq;并创建编辑器的文本域,具体代码如下;
//设计标题
JFramef=newJFrame();
f.setTitle("文本编辑器Bjq");
//构造文本域
JTextAreaaa=newJTextArea("",20,50);//构造一个文本域
(2)创建一个空的菜单条并添加两个菜单项(文件、编辑)
JMenuBarcc=newJMenuBar();//创建一个空的菜单条
//创建"文件"和"编辑"这两个菜单项
JMenufile=newJMenu("文件");
JMenuedit=newJMenu("编辑");
(3)先设计一个匿名内部类,为文件、编辑菜单添加新建和其他下拉子菜单
“新建”子菜单:
创建OpenL类实现了ActionLister并实现其读取文件的功能以匿名内部类的形式创建菜单监听器这些代码的作用是实现对新建、保存、打开、退出、复制进行监听,
//实现文本文件的打开功能----即文件菜单下的子菜单"打开"
classopenLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showDialog(Bjq.this,"打开");
“退出”子菜单:
//实现文本文件的退出功能----即文件菜单下的子菜单"退出"
classexitLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
}
//新建、保存、复制、粘贴与之相类似就不做说明
(4)右键快捷菜单的字体子菜单的创建:
字体包括字体的大小和字体的颜色等等
//设计字体大小
classfontsizeimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intn;
Stringno;
no=JOptionPane.showInputDialog("请输入你想要的字体大小:
");
n=Integer.parseInt(no);
Fontft;
ft=newFont("",Font.BOLD,n);
aa.setFont(ft);
}
}通过用户输入所需的字号的大小来调节字体大小以满足不同需要,
//设计字体颜色
classfontcolorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Colora=newColor(0,192,191);
JColorChooserc=newJColorChooser();
a=c.showDialog(Bjq.this,"颜色选择框",a);
aa.setForeground(a);
}
}
(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:
复制、粘贴、字体大小、字体颜色。
popup=newJPopupMenu();
JMenuItemcopy=newJMenuItem("复制");
JMenuItemword=newJMenuItem("字体");
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmousePressed(MouseEvente){}
publicvoidmouseReleased(MouseEvente){}
当单击右键时可以弹出复制、粘贴和字体菜单,实现功能,实现鼠标的控制来完成弹出菜单的操作。
(6)为窗体添加监听器
当用户按关闭按钮时就可以将窗口关闭,实现了对窗体的控制。
//关闭窗口
protectedstaticfinalclassappCloseLextendsWindowAdapter{
publicvoidwindowClosing(WindowEvente){
System.exit(0);}
f.setSize(800,500);
f.setVisible(true);
(这两个代码是设计窗体的的大小和窗口的可见性。
)
(7)设计main方法:
为整个程序的开始提供了入口,
publicstaticvoidmain(Stringargs[]){
JFramef=newJFrame();
Bjqapplet=newBjq();
f.setTitle("一生痴狂一世繁华BY梦落痴狂");
f.setBackground(Color.red);
f.getContentPane().add(applet,BorderLayout.CENTER);
f.addWindowListener(newappCloseL());
f.setSize(800,500);
f.setVisible(true);
f.pack();
}
为静态的主函数。
三、设计体会
Java语言是很神奇的一门课程,我喜欢编程。
喜欢最后编完的一刹那的成功,尤其是进行课程设计,我更加深刻体会到了Java的诡异,无法掌控,最后的程序虽没有实现所有功能,但也可以运行了,这次课程设计中我独立完成了程序的绝大多数部分,很开心。
不过有太多不会,总是蒙一些东西。
有些一知半解的东西还是不了解,有些东西是会用了,但对其工作原理却很模糊。
这些都是以后在学Java用Java的路上需要解决的,Java的魅力真的让人着迷。
在课程设计的过程我遇到了好多的麻烦,有些是自己的马虎,有些也是因为程序太长有时会出一些小的问题,都是自己不应该发生的。
但有些是不可以避免的啊,所以说我们在进行Java课程设计的时候要认真仔细不要只图快,要认真每一个环节的输入,否则会给我们带来许多不必要的麻烦,因此要想做好一个好的完整的Java程序一定要有足够的耐心,只有这样你才会有好的结果,才会感觉到成功的喜悦,理解到认真和粗心的后果。
总之,这次设计还是教了我很多,以及一些在平时生活中不可能遇见的一些问题,使我领略到一些人生道理,这些是在现实生活中难以解决的和学到的,相信Java会让我觉得更加充实和快乐!
附:
源程序代码
//Bjq.java
importjava.awt.*;
importjava.awt.print.*;
importjava.awt.datatransfer.*;
importjava.applet.*;
importjavax.swing.JColorChooser;
importjavax.swing.event.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.text.*;
importjavax.swing.colorchooser.*;
publicclassBjqextendsJPanel{
privateJPopupMenupopupMenu=newJPopupMenu();
JTextAreaaa=newJTextArea("",20,50);//构造一个文本域
JScrollPanebb=newJScrollPane(aa);
JMenuBarcc=newJMenuBar();//创建一个空的菜单条
JMenufile=newJMenu("文件");
//创建"文件"和"编辑"这两个菜单项
JMenuedit=newJMenu("编辑");
//菜单内容
JMenuItemdd;
//实例化剪切板
Clipboardclipbd=getToolkit().getSystemClipboard();
JMenufileMenu;
JPopupMenujPopupMenuOne;
JMenuItemopenFile,closeFile,exit;
JRadioButtonMenuItemcopyFile,pasteFile;
ButtonGroupbuttonGroupOne;
publicBjq(){
//新建一个内部类
classnewLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
aa.setDocument(newPlainDocument());
}
}
//实现文本文件的打开功能----即文件菜单下的子菜单"打开"
classopenLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showDialog(Bjq.this,"打开");
if(returnVal==JFileChooser.APPROVE_OPTION){
Stringfile=fc.getSelectedFile().getPath();
if(file==null){
return;
}
//读取文件
try{
Readerin=newFileReader(file);
char[]buff=newchar[4096];
intnch;
while((nch=in.read(buff,0,buff.length))!
=-1){
aa.setDocument(newPlainDocument());
aa.append(newString(buff,0,nch));
}
}catch(IOExceptionio){
System.err.println("IOException:
"+io.getMessage());
}
}else{
return;
}
}
}
//实现文本文件的保存功能----即文件菜单下的子菜单"保存"
classsaveLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
JFileChooserfc=newJFileChooser();
intreturnVal=fc.showSaveDialog(Bjq.this);
if(returnVal==JFileChooser.APPROVE_OPTION){
Stringsavefile=fc.getSelectedFile().getPath();
if(savefile==null){
return;
}else{
StringdocToSave=aa.getText();
if(docToSave!
=null){
FileOutputStreamfstrm=null;
BufferedOutputStreamostrm=null;
try{
fstrm=newFileOutputStream(savefile);
ostrm=newBufferedOutputStream(fstrm);
byte[]bytes=null;
try{
bytes=docToSave.getBytes();
}catch(Exceptione1){
e1.printStackTrace();
}
ostrm.write(bytes);
}catch(IOExceptionio){
System.err.println("IOException:
"
+io.getMessage());
}finally{
try{
ostrm.flush();
fstrm.close();
ostrm.close();
}catch(IOExceptionioe){
System.err.println("IOException:
"
+ioe.getMessage());
}
}
}
}
}else{
return;
}
}
}
//实现文本文件的退出功能----即文件菜单下的子菜单"退出"
classexitLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
System.exit(0);
}
}
//实现文本文件的粘贴功能----即编辑菜单下的子菜单"粘贴"
classcopyLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Stringselection=aa.getSelectedText();
StringSelectionclipString=newStringSelection(selection);
clipbd.setContents(clipString,clipString);
}
}
//粘贴
classpasteLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
TransferableclipData=clipbd.getContents(Bjq.this);
try{
StringclipString=(String)clipData
.getTransferData(DataFlavor.stringFlavor);
aa.replaceRange(clipString,aa.getSelectionStart(),aa
.getSelectionEnd());
}catch(Exceptionex){
}
}
}
//设计字体大小
classfontsizeimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
intn;
Stringno;
no=JOptionPane.showInputDialog("请输入你想要的字体大小:
");
n=Integer.parseInt(no);
Fontft;
ft=newFont("",Font.BOLD,n);
aa.setFont(ft);
}
}
//设计字体颜色
classfontcolorimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
Colora=newColor(0,192,191);
JColorChooserc=newJColorChooser();
a=c.showDialog(Bjq.this,"颜色选择框",a);
aa.setForeground(a);
}
}
//注册一个事件监听器
classjtaLimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
}
}
//
//definepopmenu定义弹出菜单
JMenuItemcut=newJMenuItem("粘贴");
JMenuItemFontSize=newJMenuItem("字体大小");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 专业技能