版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.功能分析功能逻辑图:根据功能逻辑分析图,txt小说阅读器应该具备以下功能:文件的打开及关闭字体的设置查找功能底部按钮(首页、尾页、上一页,下一页,滚屏)双击窗体自动滚屏,单击窗体停止滚屏2.功能实现、设计,分析2.1文件的打开2.11功能实现2.1.2功能设计实现的关键代码:监视器:open.addActionListener(newActionListener()/打开publicvoidactionPerformed(ActionEvente)fileOpen(););2privatevoidfileOpen()/文件对话框intflag=fileDialog.showOpenDial
2、og(this);if(flag=JFileChooser.APPROVE_OPTION)/获得该文件Filf=fileDialog.getSelectedFile();textArea.setText(null);tryFiledir=fileDialog.getCurrentDirectory();/返回当前目录Stringname=fileDialog.getSelectedFile().getName();Filefile=newFile(dir,name);fileReader=newFileReader(file);in=newBufferedReader(fileReader);
3、Strings=null;while(s=in.readLine()!=null)textArea.append(s+n);in.close();fileReader.close();textArea.setCaretPosition(0);/让一开始滚动条就在取上方catch(IOExceptionexp)213功能分析经过实验及测试,实现的文件对话框可以正常打开任何文件txt文件,但打开doc文件时会出现乱码的情况22字体的设置2.2.1功能实现2.2.2功能设计实现的关键代码:监视器:font.addActionListener(newActionListener()/字体设置publi
4、cvoidactionPerformed(ActionEvente)font1.addEventHandler(););2classfont/字体设置privateJTextAreatextArea;privateJButtonok,cancel;privateJComboBoxfontName,fontSize,fontStyle;GraphicsEnvironmentge;/定义系统字体对象Stringsize=8,10,12,14,16,18,20,22,24,26,28,32,36,48,72,96;Stringstyle=PLAIN,BOLD,ITALIC;JFramejf=newJ
5、Frame(”字体设置”);publicfont(JTextAreatextArea)this.textArea=textArea;TOC o 1-5 h zJLabellabel1=newJLabel(字体);JLabellabel2=newJLabel(字号);JLabellabel3=newJLabel(样式);ge=GraphicsEnvironment.getLocalGraphicsEnvironment();/获取系统字体Stringfontname=ge.getAvailableFontFamilyNames();fontName=newJComboBox(fontname);
6、fontSize=newJComboBox(size);fontStyle=newJComboBox(style);ok=newJButton(确定);cancel=newJButton(取消);jf.setLayout(newBorderLayout();JPanelp1=newJPanel();/P236JPanelp2=newJPanel();JPanelp3=newJPanel();p1.add(label1);p1.add(label2);p1.add(label3);p2.add(fontName);p2.add(fontSize);p2.add(fontStyle);p3.add
7、(ok);p3.add(cancel);jf.add(p1,BorderLayout.NORTH);/布局,放置的位置jf.add(p2,BorderLayout.CENTER);jf.add(p3,BorderLayout.SOUTH);jf.setSize(360,200);jf.setLocation(300,200);jf.setvisiblefalse);jf.setResizablefalse);/大小不可调整publicvoidaddEventHandler()/TODOAuto-generatedmethodstubjf.setVisible(true);/由原先的不可见-可见
8、ok.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)Stringn1=(String)fontName.getSelectedItem();intn2=fontStyle.getSelectedIndex();Stringn3=(String)fontSize.getSelectedItem();textArea.setFont(newFont(n1,n2,Integer.parselnt(n3);jf.setVisiblefalse);/点击“确定”按钮后-不可见);cancel.add
9、ActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)jf.setVisiblefalse);/若是点击了“取消”按钮-仅仅让对话框消失即可);223功能分析实现设置字体的该窗体可以实现设置字体的类型、大小、颜色、是否加粗、倾斜等设置,但当设置为一些字体类型时,文本会出现乱码的情况,原因可能是字体编码不一样导致的23查找功能231功能实现2.3.2功能设计实现的关键代码:监视器:find.addActionListener(newActionListener()publicvoidactionPerfo
10、rmed(ActionEvente)findtest=newFind(textArea,x,y);findtest.findset(););2importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.*;publicclassFindimplementsActionListener,DocumentListenerprivateJFramejframe;privateJLabeljlabel;privateJTextFieldjtextFile;privateJButtonjbtNex
11、t;privateJButtonjbtCancel;JTextAreatextArea;inti=0;intx,y;publicFind(JTextAreatextArea,intx,inty)this.x=x;this.y=y;this.textArea=textArea;jframe=newJFrame();jlabel=newJLabel(查找内容:”);jtextFile=newJTextField(10);jbtNext=newJButton(”查找下一个”);jbtCancel=newJButton(”取消”);jframe.setLayout(newFlowLayout();jf
12、rame.add(jlabel);jframe.add(jtextFile);jframe.add(jbtNext);jframe.add(jbtCancel);jframe.setBounds(x+200,y+200,220,120);jframe.setvisible(false);/jtextFile.setEditable(true);jframe.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);/jframe.pack();voidfindset()jframe.setvisible(true);jbtNext.addActionList
13、ener(this);jbtCancel.addActionListener(newActionListener()publicvoidactionPerformed(ActionEventarg0)jframe.setvisible(false);/一旦点击“取消”按钮后对话框马上消失jtextFile.setText(null);/点击“取消”按钮之后,文本框清空i=0;/点击“取消”按钮之后,i重新赋值0,即下一次查找从头开始);(jtextFile.getDocument().addDocumentListener(this);/监视文本框P251Overridepublicvoida
14、ctionPerformed(ActionEvente)Stringstring=jtextFile.getText().trim();/获取文本框中的内容if(!(.equals(string)/空字符串与用户输入的字符串作比较P189Stringstr=textArea.getText();/获取textArea的内容if(i!=-1)/防止当i=-1时,下面这行代码会把i=-1重新赋值,导致从头再查找-查找到尾部后不允许从头重新查找i=str.indexOf(string,i);/192if(i=0)textArea.setSelectionStart(i);textArea.setSe
15、lectionEnd(i+string.length();elseJOptionPane.showMessageDialog(null,没有找到+string);/消息对话框P285,放置在屏幕中间elseJOptionPane.showMessageDialog(null,输入不能为空);if(i!=(-1)/为了能继续查找下一个关键字i+=1;/System.out.println(i);/监听文本框文本框一旦改变(增加、删除、改变),i=0OverridepublicvoidchangedUpdate(DocumentEventarg0)/没有下面两个函数,查找一次到头了就不能再继续查找
16、下一次了(即使修改查找内容)/TODOAuto-generatedmethodstubi=0;OverridepublicvoidinsertUpdate(DocumentEventarg0)/在查找内容的基础上删除/TODOAuto-generatedmethodstubchangedUpdate(arg0);OverridepublicvoidremoveUpdate(DocumentEventarg0)/在查找内容的基础上删除/TODOAuto-generatedmethodstubchangedUpdate(arg0);2.3.3功能分析经过试验,测试,改进,以及再测试,该查找功能能完
17、善地实现查找的功能,精确定位到关键字,符合查找的规则2.4自动滚屏2.4.1功能实现2.4.2功能设计实现的关键代码:Timertimer=newTimer(delay,newActionListener()publicvoidactionPerformed(ActionEventevt)jsb.setvalue(jsb.getvalue()+jsb.getUnitIncrement();/设置滚动条的值);textArea.addMouseListener(newMouseListener()/监听鼠标的点击数,执行相应的操作P252publicvoidmouseClicked(MouseE
18、vente)if(e.getClickCount()=2)/滚屏/timer.start();count=1;/为的是与底部的“滚屏按钮对应”timer.start();/为的是与底部的“滚屏按钮对应”roll.setText(”暂停滚屏”);if(e.getClickCount()=1)/停止滚屏/timer.stop();count=0;timer.stop();roll.setText(自动滚屏”);publicvoidmouseEntered(MouseEvente)publicvoidmouseExited(MouseEvente)publicvoidmousePressed(Mou
19、seEvente)publicvoidmouseReleased(MouseEvente);或者:roll.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)if(+count)%2=1)/滚屏timer.start();roll.setText(”暂停滚屏”);else/停止滚屏timer.stop();roll.setText(自动滚屏”););2.4.3功能分析经过试验,测试,改进,以及再测试,点击窗体下方的“自动暂停滚屏”按钮可以实现滚屏或是暂停滚屏。鼠标双击/单击窗体,可以实现实现滚
20、屏或是暂停滚屏,并且与窗体下方的“自动/暂停滚屏”按钮的文字相互协调、互相一致,保持同步25设计滚屏速度251功能实现2.5.2功能设计实现的关键代码:监视器:speed.addActionListener(newActionListener()/滚屏速度的设置publicvoidactionPerformed(ActionEvente)sped.liser(););2importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;classSpeedimplementsItemListenerprivateJScrollBarjsb;p
21、rivateJFramejfrm;privateJLabeljlbl;privateJButtonjbt;privateJComboBoxjcbb;Integersudu;速度Timertimer;计时器privateIntegermsg=1,2,3,4,5,6,7,8;publicSpeed(finalJScrollBarjsb,finalTimertimer)this.jsb=jsb;this.timer=timer;jfrm=newJFrame();jlb1=newJLabel(滚屏速度”);jbt=newJButton(确定);jcbb=newJComboBox(msg);jfrm.s
22、etLayout(newFlowLayout();jfrm.add(jlbl);jfrm.add(jcbb);jfrm.add(jbt);jfrm.setVisible(false);jcbb.setEditable(true);jfrm.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);jfrm.pack();voidliser()jfrm.setVisible(true);jcbb.addltemListener(this);/*关键jbt.addActionListener(newActionListener()“确定按钮的监听publicvo
23、idactionPerformed(ActionEventargO)jfrm.setVisible(false);一旦点击“确定按钮后对话框马上消失);OverridepublicvoiditemStateChanged(ItemEventarg0)sudu=(Integer)jcbb.getSelectedItem();jsb.setUnitIncrement(Value();2.5.3功能分析经过试验及测试,该功能可以实现对滚屏速度的设置,而且设置合理2.6分页2.6.1功能实现2.6.2功能设计1上一页:PageUp.addActionListener(newAction
24、Listener()/上一页publicvoidactionPerformed(ActionEvente)jspValue=scroll.getVerticalScrollBar().getvalue();scroll.getVerticalScrollBar().setValue(jspValue-=scroll.getHeight();2下一页:PageDown.addActionListener(newActionListener()/下一页publicvoidactionPerformed(ActionEvente)jspValue=scroll.getVerticalScrollBar().getvalue();scroll.getVerticalScrollBar().setvalue(jspValue+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024副食品保障供应合同
- 农产品采购合作协议书
- 社区物业管理服务合同
- 小额民间借款合同范本
- 建筑行业材料购销协议模板
- 2023年高考地理复习精题精练-区域发展对交通运输布局的影响(解析版)
- 2024年售房的合同范本
- 建筑工地物资租赁合同书
- 房产抵押担保协议参考
- 2024年劳务协议书样本
- 企业如何利用新媒体做好宣传工作课件
- 如何培养孩子的自信心课件
- 中医药膳学全套课件
- 颈脊髓损伤-汇总课件
- 齿轮故障诊断完美课课件
- 2023年中国盐业集团有限公司校园招聘笔试题库及答案解析
- 大班社会《特殊的车辆》课件
- 野生动物保护知识讲座课件
- 早教托育园招商加盟商业计划书
- 光色变奏-色彩基础知识与应用课件-高中美术人美版(2019)选修绘画
- 前列腺癌的放化疗护理
评论
0/150
提交评论