java记事本课程设计.docx
《java记事本课程设计.docx》由会员分享,可在线阅读,更多相关《java记事本课程设计.docx(47页珍藏版)》请在冰豆网上搜索。
java记事本课程设计
JAVA语言课程设计报告
题目:
记事本的制作
设计者:
刘兴钢
专业班级:
信管07—班
学号:
************
********
2010年12月24日
河南理工大学计算机学院
1、系统需求分析
1.1系统名称:
Window记事本
1.2系统介绍:
开发一个window记事本,主要有一个主界面及以下功能:
1:
文件的新建,打开,保存,打印,另存等;
2:
对文件的编辑,如全选,复制,剪切,粘贴等;
3:
对文件的格式操作,如自动换行,字体等;
4:
帮助,包括帮助主题,关于。
1.3开发环境
Eclipse
2.系统总体设计
2.1系统功能结构图
2.2系统文件结构图
2.3系统编辑结构图
2.4系统格式、帮助结构图
3系统详细设计
3.1.主界面
主界面主要是用于对选择相应的功能进行相应的功能,主界面主要包括文件,编辑,格式,帮助四个下拉菜单功能。
重要代码:
创建界面,安装各种监听器
publicNotebook(){
setTitle("记事本--刘兴钢");
con=getContentPane();
text=newJTextArea();
JSPane=newJScrollPane(text);
createMenu();
createPopupMenu();
setJMenuBar(mainMenuBar);
con.add(JSPane,BorderLayout.CENTER);
text.setComponentPopupMenu(popMenu);
text.getDocument().addDocumentListener(this);
text.addKeyListener(newhandleKey());
text.addMouseListener(newhandleMouse());
setSize(400,300);
setVisible(true);
菜单代码
publicvoidcreateMenu(){
//创建JMenuBar
mainMenuBar=newJMenuBar();
//创建四个JMenu
fileMenu=newJMenu("文件");
editMenu=newJMenu("编辑");
formatMenu=newJMenu("格式");
helpMenu=newJMenu("帮助");
3.2.字体设计界面
主要代码
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.awt.*;
publicclassfontDialogextendsJDialogimplementsActionListener,ListSelectionListener{
publicstaticfinalintCancle=0;
publicstaticfinalintOK=1;
publicstaticfinalString[]style={"正常","斜体","粗体","粗斜体"};
publicstaticfinalString[]size={"8","9","10","11","12","14","16",
"18","20","22","24","26","28","36","48","72"};
privateFontuserFont=null;
privateintuserSelect=Cancle;
privateJFrameparent=null;
privateContainercon;
privateJScrollPanenameSPane,styleSPane,sizeSPane;
privateJPanelpanel[];
privateJLabelnameLbl,styleLbl,sizeLbl;
privateJTextFieldnameText,styleText,sizeText;
privateJListnameList,styleList,sizeList;
privateJButtonOKBtn,cancleBtn;
publicfontDialog(){
this(null);
}
publicfontDialog(JFrameowner){
super(owner,true);
parent=owner;
setTitle("字体");
con=getContentPane();
BoxLayoutbox=newBoxLayout(con,BoxLayout.Y_AXIS);
con.setLayout(box);
panel=newJPanel[4];
for(inti=0;i<3;i++){
panel[i]=newJPanel();
panel[i].setLayout(newGridLayout(1,3));
}
panel[3]=newJPanel();
panel[3].setLayout(newFlowLayout());
nameLbl=newJLabel("字体");
styleLbl=newJLabel("字形");
sizeLbl=newJLabel("大小");
panel[0].add(nameLbl);
panel[0].add(styleLbl);
panel[0].add(sizeLbl);
nameText=newJTextField("宋体");
nameText.setColumns(5);
nameText.setEditable(false);
styleText=newJTextField("正常");
styleText.setColumns(5);
styleText.setEditable(false);
sizeText=newJTextField("12");
sizeText.setColumns(5);
sizeText.setEditable(false);
panel[1].add(nameText);
panel[1].add(styleText);
panel[1].add(sizeText);
GraphicsEnvironmenteq=GraphicsEnvironment.getLocalGraphicsEnvironment();
String[]availableFonts=eq.getAvailableFontFamilyNames();
nameList=newJList(availableFonts);
nameList.addListSelectionListener(this);
nameSPane=newJScrollPane(nameList);
styleList=newJList(style);
styleList.addListSelectionListener(this);
styleSPane=newJScrollPane(styleList);
sizeList=newJList(size);
sizeList.addListSelectionListener(this);
sizeSPane=newJScrollPane(sizeList);
panel[2].add(nameSPane);
panel[2].add(styleSPane);
panel[2].add(sizeSPane);
OKBtn=newJButton("确定");
OKBtn.addActionListener(this);
cancleBtn=newJButton("取消");
cancleBtn.addActionListener(this);
panel[3].add(OKBtn);
panel[3].add(cancleBtn);
for(inti=0;i<4;i++)
con.add(panel[i]);
}
publicintshowFontDialog(){
setSize(300,300);
intx,y;
if(parent!
=null){
x=parent.getX()+30;
y=parent.getY()+30;
}else{
x=150;
y=100;
}
setLocation(newPoint(x,y));
setVisible(true);
returnuserSelect;
}
publicFontgetFont(){
returnuserFont;
}
publicvoidactionPerformed(ActionEvente){
intstyleIndex=Font.PLAIN,fontSize;
if(e.getSource()==OKBtn){
if(styleText.getText().equals("正常"))
styleIndex=Font.PLAIN;
if(styleText.getText().equals("斜体"))
styleIndex=Font.ITALIC;
if(styleText.getText().equals("粗体"))
styleIndex=Font.BOLD;
if(styleText.getText().equals("粗斜体"))
styleIndex=Font.BOLD|Font.ITALIC;
fontSize=Integer.parseInt(sizeText.getText());
userFont=newFont(nameText.getText(),styleIndex,fontSize);
userSelect=OK;
setVisible(false);
}else{
userSelect=Cancle;
setVisible(false);
}
}
publicvoidvalueChanged(ListSelectionEvente){
if(e.getSource()==nameList)
nameText.setText((String)nameList.getSelectedValue());
if(e.getSource()==styleList)
styleText.setText((String)styleList.getSelectedValue());
if(e.getSource()==sizeList)
sizeText.setText((String)sizeList.getSelectedValue());
}
}
3.3.保存界面
代码
intdoSave(){
FileOutputStreamfout;
bytecontent[];
intflag;
if(!
haveName){
flag=doSaveAs();
}elseif(changed){
try{
fout=newFileOutputStream(file);
content=text.getText().getBytes();
fout.write(content);
fout.close();
changed=false;
flag=1;
}catch(FileNotFoundExceptione){
JOptionPane.showMessageDialog(this,"指定的文件名称或属性有问题!
");
flag=0;
}catch(IOExceptione){
JOptionPane.showMessageDialog(this,"无法写文件,请检查文件是否被锁定");
flag=0;
}
}else{
flag=1;
}
returnflag;
}
3.4.打印设计界面
代码如下:
voiddoPrint(){
try{
PrintRequestAttributeSetpras=newHashPrintRequestAttributeSet();
DocFlavorflavor=DocFlavor.BYTE_ARRAY.AUTOSENSE;
PrintServiceprintService[]=PrintServiceLookup.lookupPrintServices(flavor,pras);
PrintServicedefaultService=PrintServiceLookup.lookupDefaultPrintService();
PrintServiceservice=null;
service=ServiceUI.printDialog(null,100,100,printService,defaultService,flavor,pras);
if(service!
=null){
DocPrintJobjob=service.createPrintJob();
DocAttributeSetdas=newHashDocAttributeSet();
Docdoc=newSimpleDoc(text.getText().getBytes(),flavor,das);
job.print(doc,pras);//进行文件的打印
}
}catch(Exceptione){
JOptionPane.showMessageDialog(this,"打印任务无法完成");
}
}
3.5.查找设计界面
代码如下:
publicfindDialog(JFrameowner,JTextAreaJtext){
super(owner,false);
start=0;
text=Jtext;
panel1=newJPanel();
panel1.setLayout(newFlowLayout());
panel2=newJPanel();
panel2.setLayout(newFlowLayout());
label1=newJLabel("查找内容");
findEdit=newJTextField(12);
OKBtn=newJButton("查找下一个");
OKBtn.addActionListener(this);
panel1.add(label1);
panel1.add(findEdit);
panel1.add(OKBtn);
checkBox=newJCheckBox("区分大小写");
checkBox.setSelected(true);
upBtn=newJRadioButton("向上");
downBtn=newJRadioButton("向下",true);
dirBtnGroup=newButtonGroup();
dirBtnGroup.add(upBtn);
dirBtnGroup.add(downBtn);
CancleBtn=newJButton("取消");
CancleBtn.addActionListener(this);
panel2.add(checkBox);
panel2.add(upBtn);
panel2.add(downBtn);
panel2.add(CancleBtn);
con=getContentPane();
con.setLayout(newFlowLayout());
con.add(panel1);
con.add(panel2);
setTitle("查找");
setSize(300,120);
setVisible(true);
}
4软件测试
软件测试成功
5系统总结
总体来说,本次项目在规定期间顺利完成,记事本能够完成文件的编辑、保存、剪切,复制、查询、自动换行,字体设计和打印和页面设计等的相应功能。
6系统设计心得体会
经过一个星期的我的记事本的课程设计,我在老师及同学的指导帮助下,顺利完成该课程设计。
通过该课程设计,收获颇多。
首先,让我加深了对Java语言的理论知识的理解;
其次,让我更加熟练的掌握了Java语言的设计能力并且有了实践经验;
再次,在设计过程中,学到了老师没有在课堂上没有教授的知识;
最后,加强了我对Java语言的学习兴趣和好感。
7参考文献
[1]耿详义,张跃平.Java2实用教程.北京:
清华大学出版社,2004.2
[2]张利国.Java实用教程案例.北京:
清华大学出版社,2003.10
[3]周晓聪,等.面向对象程序设计与Java语言.北京:
机械工业出版社,2004.3
[4]李尊朝.Java语言程序设计.北京:
中国铁道出版社,2004.2
[5](美)PhilipHeller.ComplateJava2CertificationStudyGuideFourthEdition(Java2证学习指南)(第四版英文版).北京:
电子工业出版社,2004.1
附录:
程序清单
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.io.*;
importjavax.swing.event.*;
importjavax.print.*;
importjavax.print.attribute.*;
importjava.util.*;
importjava.text.*;
publicclassNotebookextendsJFrameimplementsActionListener,DocumentListener{
Containercon;
JScrollPaneJSPane;
JTextAreatext;
JMenuBarmainMenuBar;
JMenufileMenu,editMenu,formatMenu,helpMenu;
JMenuItemnewItem,openItem,saveItem,saveasItem,pageItem,printItem,exitItem;
JMenuItemundoItem,cutItem,copyItem,pasteItem,findItem,replaceItem,selectallItem,dateItem;
JCheckBoxMenuItemwrapItem;
JMenuItemfontItem;
JMenuItemhelpItem,aboutItem;
JPopupMenupopMenu;
fontDialogmyFontDialog=null;
booleanchanged=false;
booleanhaveName=false;
Filefile=null;
//主程序入口
publicstaticvoidmain(String[]args){
newNotebook();
}
//创建界面、安装各种监听器、
publicNotebook(){
setTitle("记事本--刘兴钢");
con=getContentPane();
text=newJTextArea();
JSPane=newJScrollPane(text);
createMenu();
createPopupMenu();
setJMenuBar(mainMenuBar);
con.add(JSPane,BorderLayout.CENTER);
text.setComponentPopupMenu(popMenu);
text.getDocument().addDocumentListener(this);
text.addKeyListener(newhandleKey());
text.addMouseListener(newhandleMouse());
setSize(400,300);
setVisible(true);
}
//创建主菜单
publicvoidcreateMenu(){
//创建JMenuBar
mainMenuBar=newJMenuBar();
//创建四个JMenu
fileMenu=newJMenu("文件");
editMenu=newJMenu("编辑");
formatMenu=newJMenu("格式");
helpMenu=newJMenu("帮助");
//创建JMenuItem并添加到对应的JMenu中
mainMenuBar.add(fileMenu);
newItem=newJMenuItem("新建");
openItem=newJMenuItem("打开..");
saveItem=newJMenuItem("保存..");
saveasItem=newJMenuItem("另存为..");
pageItem=newJMenuItem("页面设置..");
printItem=newJMenuItem("打印..");
exitItem=newJMenuItem("退出");
fileMenu.add(newItem);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(saveasItem);
fileMenu.addSeparator();
fileMenu.add(pageItem);
fileMenu.add(printItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
mainMenuBar.add(editMenu);
undoItem=newJMenuItem("撤消");
cutI