Java-txt小说阅读器实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1.功能分析功能逻辑图:txt小说阅读器文件查找帮助格式打开文件退出字体颜色背景颜色滚屏速度查找帮助信息关于首页自动滚屏下一页上一页尾页底部按钮根据功能逻辑分析图,txt小说阅读器应该具备以下功能:[1]文件的打开及关闭[2]字体的设置[3]查找功能[4]底部按钮(首页、尾页、上一页,下一页,滚屏)[5]双击窗体自动滚屏,单击窗体停止滚屏2.功能实现、设计,分析2.1文件的打开2.1.1功能实现2.1.2功能设计实现的关键代码:[1]监视器:open.addActionListener(newActionListener(){//打开publicvoidactionPerformed(ActionEvente){fileOpen();}});[2]privatevoidfileOpen(){//文件对话框intflag=fileDialog.showOpenDialog(this);if(flag==JFileChooser.APPROVE_OPTION){//获得该文件Filef=fileDialog.getSelectedFile();textArea.setText(null);try{Filedir=fileDialog.getCurrentDirectory();//返回当前目录Stringname=fileDialog.getSelectedFile().getName();Filefile=newFile(dir,name);fileReader=newFileReader(file);in=newBufferedReader(fileReader);Strings=null;while((s=in.readLine())!=null){textArea.append(s+\n);}in.close();fileReader.close();textArea.setCaretPosition(0);//让一开始滚动条就在最上方}catch(IOExceptionexp){}}}2.1.3功能分析经过实验及测试,实现的文件对话框可以正常打开任何文件txt文件,但打开doc文件时会出现乱码的情况2.2字体的设置2.2.1功能实现2.2.2功能设计实现的关键代码:[1]监视器:font.addActionListener(newActionListener(){//字体设置publicvoidactionPerformed(ActionEvente){font1.addEventHandler();}});[2]classfont{//字体设置privateJTextAreatextArea;privateJButtonok,cancel;privateJComboBoxfontName,fontSize,fontStyle;GraphicsEnvironmentge;//定义系统字体对象String[]size={8,10,12,14,16,18,20,22,24,26,28,32,36,48,72,96};String[]style={PLAIN,BOLD,ITALIC};JFramejf=newJFrame(字体设置);publicfont(JTextAreatextArea){this.textArea=textArea;JLabellabel1=newJLabel(字体);JLabellabel2=newJLabel(字号);JLabellabel3=newJLabel(样式);ge=GraphicsEnvironment.getLocalGraphicsEnvironment();//获取系统字体String[]fontname=ge.getAvailableFontFamilyNames();fontName=newJComboBox(fontname);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(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.setVisible(false);jf.setResizable(false);//大小不可调整}publicvoidaddEventHandler(){//TODOAuto-generatedmethodstubjf.setVisible(true);//由原先的不可见--可见ok.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Stringn1=(String)fontName.getSelectedItem();intn2=fontStyle.getSelectedIndex();Stringn3=(String)fontSize.getSelectedItem();textArea.setFont(newFont(n1,n2,Integer.parseInt(n3)));jf.setVisible(false);//点击“确定”按钮后--不可见}});cancel.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){jf.setVisible(false);//若是点击了“取消”按钮--仅仅让对话框消失即可}});}}2.2.3功能分析实现设置字体的该窗体可以实现设置字体的类型、大小、颜色、是否加粗、倾斜等设置,但当设置为一些字体类型时,文本会出现乱码的情况,原因可能是字体编码不一样导致的2.3查找功能2.3.1功能实现2.3.2功能设计实现的关键代码:[1]监视器:find.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){findtest=newFind(textArea,x,y);findtest.findset();}});[2]importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.event.*;publicclassFindimplementsActionListener,DocumentListener{privateJFramejframe;privateJLabeljlabel;privateJTextFieldjtextFile;privateJButtonjbtNext;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());jframe.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.addActionListener(this);jbtCancel.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){jframe.setVisible(false);//一旦点击“取消”按钮后对话框马上消失jtextFile.setText(null);//点击“取消”按钮之后,文本框清空i=0;//点击“取消”按钮之后,i重新赋值0,即下一次查找从头开始}});(jtextFile.getDocument()).addDocumentListener(this);//监视文本框P251}@OverridepublicvoidactionPerformed(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.setSelectionEnd(i+string.length());}else{JOptionPane.showMessageDialog(null,没有找到+string);//消息对话框P285,放置在屏幕中间}}else{JOptionPane.showMessageDialog(null,输入不能为空);}if(i!=(-1)){//为了能继续查找下一个关键字i+=1;}//System.out.println(i);}//监听文本框文本框一旦改变(增加、删除、改变),i=0@OverridepublicvoidchangedUpdate(DocumentEventarg0){//没有下面两个函数,查找一次到头了就不能再继续查找下一次了(即使修改查找内容)//TODOAuto-generatedmethodstubi=0;}@OverridepublicvoidinsertUpdate(DocumentEventarg0){//在查找内容的基础上删除//TODOAuto-generatedmethodstubchangedUpdate(arg0);}@OverridepublicvoidremoveUpdate(DocumentEventarg0){//在查找内容的基础上删除//TODOAuto-generatedmethodstubchangedUpdate(arg0);}}2.3.3功能分析经过试

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功