软件开发工具课设用源码论述Eclipse学习体会附Notepad记事本程序完整源代码.docx
- 文档编号:9494150
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:21
- 大小:470.26KB
软件开发工具课设用源码论述Eclipse学习体会附Notepad记事本程序完整源代码.docx
《软件开发工具课设用源码论述Eclipse学习体会附Notepad记事本程序完整源代码.docx》由会员分享,可在线阅读,更多相关《软件开发工具课设用源码论述Eclipse学习体会附Notepad记事本程序完整源代码.docx(21页珍藏版)》请在冰豆网上搜索。
软件开发工具课设用源码论述Eclipse学习体会附Notepad记事本程序完整源代码
学号:
课程设计
课程名称
软件开发工具
论文题目
用源码论述Eclipse学习体会
学院
计算机科学与技术学院
专业
班级
姓名
指导教师
张能立
2014——2015学年第一学期
用源码论述Eclipse学习体会
摘要:
这一学期,在张老师的指导下,我们学习了提供集成开发环境的软件开发工具Eclipse的使用。
在Java编程实践中,我对Eclipse在编译Java程序方面所带来的方便感触颇深。
本文用以Eclipse为平台、用Java语言编译出的记事本(Notepad)应用程序源代码,论述我在实际编程中的体会以及《软件开发工具》课程的学习总结。
关键词:
Eclipse;Java;记事本
目录
1引言1
2程序设计2
2.1Notepad功能分析2
2.2界面设计过程2
2.3程序逻辑实现2
2.4程序代码实现2
2.4.1菜单项的定义和创建2
2.4.2增加监听器3
2.4.3详细功能3
3Notepad源代码5
4问题反思12
4.1发现问题12
4.2已解决问题12
4.2.1如何在 Eclipse 中显示行号12
4.2.2Eclipse中文字体很小12
4.2.3调试代码出错,程序无法运行14
4.3待解决问题14
5运行截图15
6课程总结16
7参考文献16
正文
1引言
通过本学期《软件开发工具》课程的学习,我对以Eclipse为工具的Java编程更为熟悉。
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
它本身只是一个框架平台,但众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
它除了可以当作Java 集成开发环境(IDE)来使用,还包括插件开发环境,允许软件开发人员构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于 Java 开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP、Android等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
对于程序员而言,Eclipse开放源代码,这意味着我们可以通过阅读顶级的Java源代码学习优雅、高效的编程。
为了验证我的学习成果,经过多次上机实践,我成功做出了一个Notepad的Java程序。
下文将用Notepad程序源码论述我的学习体会。
2程序设计
在设计程序之初,应先考虑好自己希望程序拥有什么样的功能。
以我目前的能力而言,还是不能写出功能繁多的Notepad程序,最终设定Notepad的功能只有两类。
2.1Notepad功能分析
1)文件操作:
包括文本新建、读取、保存、另存和关闭;
2)文本的编辑:
包括剪切、复制、粘贴;
3)文本的自动换行等;
4)用户界面的设计:
包括菜单栏、菜单项目、右键菜单、保存和读取时的选择、查找的界面;
5)各种动作的监听以及响应。
2.2界面设计过程
1)创建各种菜单的JMenuItem对象,并加上监听器,加入各自对应的JMenu中;
2)实例化一个JMenuBar对象,把各个JMenu加入JMenuBar中。
2.3程序逻辑实现
点击不同的菜单触发不同的ActionEvent事件,进入各自事件类的处理方法中。
方法将主类的对象传送下去,这样事件类就可以获取信息。
2.4程序代码实现
2.4.1菜单项的定义和创建
1)菜单栏的定义
JMenuItemnewfile=newJMenuItem("New");
JMenuItemopen=newJMenuItem("Open");
JMenuItemsave=newJMenuItem("Save");
JMenuItemlsave=newJMenuItem("Saveas");
JMenuItemexit=newJMenuItem("Exit");
JMenuItemcut=newJMenuItem("Cut");
JMenuItemcopy=newJMenuItem("Copy");
JMenuItemPaste=newJMenuItem("Paste");
2)菜单栏的创建
JMenuBarcai=newJMenuBar();
this.setJMenuBar(cai);
cai.setOpaque(true);
JMenujian=newJMenu("File");
jian.add(newfile);
jian.add(open);
jian.add(save);
jian.add(lsave);
jian.addSeparator();
jian.add(exit);
cai.add(jian);
JMenubian=newJMenu("Edit");
bian.add(cut);
bian.add(copy);
bian.add(Paste);
cai.add(bian);
2.4.2增加监听器
newfile.addActionListener(this);
open.addActionListener(this);
save.addActionListener(this);
lsave.addActionListener(this);
exit.addActionListener(this);
cut.addActionListener(this);
copy.addActionListener(this);
Paste.addActionListener(this);
2.4.3详细功能
1)打开文本(Open)
publicvoidopenfile(){
StringfileName=null;
FileDialogdf=newFileDialog(this,"Openthefile",FileDialog.LOAD);
df.setVisible(true);}
2)建立新文件(New)
Filef=newFile(df.getDirectory()+df.getFile());
3)保存文本(Save)
publicvoidsavefile(){
if(fileName.equals(""){
FileDialogdf=newFileDialog(this,"Savethefile",FileDialog.SAVE);}}
4)另存文本(Saveas)
publicvoidlsavefile(){
FileDialogdf=newFileDialog(this,"Saveas",FileDialog.SAVE);}
5)剪切文本(Cut)
publicvoidcutfile(){
tempString=wen.getSelectedText();
StringBuffertmp=newStringBuffer(wen.getText());
intstart=wen.getSelectionStart();
intlen=wen.getSelectedText().length();
tmp.delete(start,start+len);
wen.setText(tmp.toString());
}
6)剪切文本(Copy)
publicvoidcopyfile(){
tempString=wen.getSelectedText();
}
粘贴文本(Paste)
publicvoidPastefile(){
StringBuffertmp=newStringBuffer(wen.getText());
intstart=wen.getSelectionStart();
tmp.insert(start,tempString);
wen.setText(tmp.toString());
}
3Notepad源代码
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
publicclassNotepadextendsJFrameimplementsActionListener{
Stringfile_name;
Stringfile_dir;
StringtempString;
//上次保存后的文件名和地址
StringfileName="";
JPanelx=newJPanel();
JTextAreawen=newJTextArea(26,45);
//定义菜单项
JMenuItemnewfile=newJMenuItem("New");
JMenuItemopen=newJMenuItem("Open");
JMenuItemsave=newJMenuItem("Save");
JMenuItemlsave=newJMenuItem("Saveas");
JMenuItemexit=newJMenuItem("Exit");
JMenuItemcut=newJMenuItem("Cut");
JMenuItemcopy=newJMenuItem("Copy");
JMenuItemPaste=newJMenuItem("Paste");
Notepad(){
super("MyNotepad1stEdition_HeShuang");//小对话框
setBounds(250,120,800,450);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
intoption=JOptionPane.showConfirmDialog(
Notepad.this,"Areyousuretoquitthesystem?
","Fromthesystem...",JOptionPane.YES_NO_OPTION);
if(option==JOptionPane.YES_OPTION)
if(e.getWindow()==Notepad.this)
{System.exit(0);}else{return;}}});
//定义面板
add(newJScrollPane(wen));//);//滚动条
wen.setFont(newFont("宋体",Font.PLAIN,18));
JMenuBarcai=newJMenuBar();//菜单栏的创建
this.setJMenuBar(cai);
cai.setOpaque(true);
JMenujian=newJMenu("File");
jian.add(newfile);
jian.add(open);
jian.add(save);
jian.add(lsave);
jian.addSeparator();
jian.add(exit);
cai.add(jian);
JMenubian=newJMenu("Edit");
bian.add(cut);
bian.add(copy);
bian.add(Paste);
cai.add(bian);
//增加监听器
newfile.addActionListener(this);
open.addActionListener(this);
save.addActionListener(this);
lsave.addActionListener(this);
exit.addActionListener(this);
cut.addActionListener(this);
copy.addActionListener(this);
Paste.addActionListener(this);
//文本框锁定
}
publicvoidactionPerformed(ActionEvente){//重写方法
StringactionCommand=e.getActionCommand();
if(e.getSource()instanceofJMenu);
{
if(e.getSource()==newfile){
newfile();
}
elseif(e.getSource()==open){
openfile();
}
elseif(e.getSource()==save){
savefile();
}
elseif(e.getSource()==lsave){
lsavefile();
}
elseif(e.getSource()==cut){
cutfile();
}
elseif(e.getSource()==copy){
copyfile();
}
elseif(e.getSource()==Paste){
Pastefile();
}
elseif("Edit".equals(actionCommand))
System.exit(0);
}
}
publicvoidnewfile(){//方法定义
savefile();
wen.setText(null);
fileName="";
}
publicvoidopenfile(){//打开
StringfileName=null;
FileDialogdf=newFileDialog(this,"Openthefile",FileDialog.LOAD);
df.setVisible(true);
//建立新文件
Filef=newFile(df.getDirectory()+df.getFile());
//得到文件名
fileName=df.getDirectory()+df.getFile();
//用此文件的长度建立一个字符数组(特别标注)
charch[]=newchar[(int)f.length()];
//异常处理
try
{
//读出数据,并存入字符数组ch中
BufferedReaderbw=newBufferedReader(newFileReader(f));
bw.read(ch);
bw.close();
}
catch(FileNotFoundExceptionfe){
System.out.println("Filenotfound");
System.exit(0);
}
catch(IOExceptionie){
System.out.println("IOerror");
System.exit(0);
}
Strings=newString(ch);
wen.setText(s);
}
publicvoidsavefile(){//保存
if(fileName.equals("")){
FileDialogdf=newFileDialog(this,"Savethefile",FileDialog.SAVE);
df.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEventee){
System.exit(0);
}
});
df.setVisible(true);
Strings=wen.getText();
try
{
Filef=newFile(df.getDirectory()+df.getFile());
fileName=df.getDirectory()+df.getFile();
BufferedWriterbw=newBufferedWriter(newFileWriter(f));
bw.write(s,0,s.length());
bw.close();
}
catch(FileNotFoundExceptionfe_){
System.out.println("Filenotfound");
System.exit(0);
}
catch(IOExceptionie_)
{
System.out.println("IOerror");
System.exit(0);
}
}
else//若文件已保存
{
Strings=wen.getText();
try
{
Filef=newFile(fileName);
BufferedWriterbw=newBufferedWriter(newFileWriter(f));
bw.write(s,0,s.length());
bw.close();
}
catch(FileNotFoundExceptionfe_){
System.out.println("Filenotfound");
System.exit(0);
}
catch(IOExceptionie_)
{
System.out.println("IOerror");
System.exit(0);
}
}
}
publicvoidlsavefile(){//文档另存为
FileDialogdf=newFileDialog(this,"Saveas",FileDialog.SAVE);
df.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEventee){
System.exit(0);
}});
df.setVisible(true);
Strings=wen.getText();
try
{
Filef=newFile(df.getDirectory()+df.getFile());
BufferedWriterbw=newBufferedWriter(newFileWriter(f));
bw.write(s,0,s.length());
bw.close();
}
catch(FileNotFoundExceptionfe_){
System.out.println("Filenotfound");
System.exit(0);
}
catch(IOExceptionie_)
{
System.out.println("IOerror");
System.exit(0);
}
}
publicvoidcutfile(){//剪切
tempString=wen.getSelectedText();
StringBuffertmp=newStringBuffer(wen.getText());
intstart=wen.getSelectionStart();
intlen=wen.getSelectedText().length();
tmp.delete(start,start+len);
wen.setText(tmp.toString());
}
publicvoidcopyfile(){//复制
tempString=wen.getSelectedText();
}
publicvoidPastefile(){//粘贴
StringBuffertmp=newStringBuffer(wen.getText());//得到要粘贴的位置
intstart=wen.getSelectionStart();
tmp.insert(start,tempString);//用新文本设置原文本
wen.setText(tmp.toString());
}
//////////////////////主函数//////////////////////////////
publicstaticvoidmain(String[]args){
Notepadw=newNotepad();
w.pack();
w.setVisible(true);
}
}
4问题反思
4.1发现问题
1)如何在Eclipse中显示行号;
2)Eclipse中文字体很小;
3)调试代码出错,程序无法运行;
4)程序虽能成功运行,但一直有警告。
4.2已解决问题
4.2.1如何在 Eclipse 中显示行号
按Ctrl+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 开发 工具 课设用 源码 论述 Eclipse 学习体会 Notepad 记事本 程序 完整 源代码