Javatxt小说阅读器实验报告Word文档格式.docx
《Javatxt小说阅读器实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《Javatxt小说阅读器实验报告Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。
![Javatxt小说阅读器实验报告Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/660f1555-fac3-4db8-a6d6-d95d1541e9c6/660f1555-fac3-4db8-a6d6-d95d1541e9c61.gif)
=new(file);
in=newBufferedReader();
Strings=null;
while((s=in.readLine())!
=null){
textArea.append(s+"
\n"
);
}
in.close();
.close();
textArea.setCaretPosition(0);
//让一开始滚动条就在最上方
}
catch(IOExceptionexp){}
}
}
2.1.3功能分析
经过实验及测试,实现的文件对话框可以正常打开任何文件txt文件,但打开doc文件时会出现乱码的情况
2.2字体的设置
2.2.1功能实现
2.2.2功能设计
font.addActionListener(newActionListener(){//字体设置
publicvoidactionPerformed(ActionEvente){
font1.addEventHandler();
}
});
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();
//P236
JPanelp2=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-generatedmethodstub
jf.setVisible(true);
//由原先的不可见-->
可见
ok.addActionListener(newActionListener(){
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(){
//若是点击了“取消”按钮-->
仅仅让对话框消失即可
}
2.2.3功能分析
实现设置字体的该窗体可以实现设置字体的类型、大小、颜色、是否加粗、倾斜等设置,但当设置为一些字体类型时,文本会出现乱码的情况,原因可能是字体编码不一样导致的
2.3查找功能
2.3.1功能实现
2.3.2功能设计
find.addActionListener(newActionListener(){
findtest=newFind(textArea,x,y);
findtest.findset();
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);
//jtext(true);
jframe.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
//jframe.pack();
voidfindset(){
jframe.setVisible(true);
jbtNext.addActionListener(this);
jbtCancel.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
jframe.setVisible(false);
//一旦点击“取消”按钮后对话框马上消失
jtext(null);
//点击“取消”按钮之后,文本框清空
i=0;
//点击“取消”按钮之后,i重新赋值0,即下一次查找从头开始
});
(jtext()).addDocumentListener(this);
//监视文本框P251
@Override
publicvoidactionPerformed(ActionEvente){
Stringstring=jtext().trim();
//获取文本框中的内容
if(!
("
.equals(string))){//空字符串及用户输入的字符串作比较P189
Stringstr=textArea.getText();
//获取textArea的内容
if(i!
=-1)//防止当i=-1时,下面这行代码会把i=-1重新赋值,导致从头再查找-->
查找到尾部后不允许从头重新查找
i=str.indexOf(string,i);
//192
if(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
publicvoidchangedUpdate(DocumentEventarg0){//没有下面两个函数,查找一次到头了就不能再继续查找下一次了(即使修改查找内容)
//TODOAuto-generatedmethodstub
i=0;
publicvoidinsertUpdate(DocumentEventarg0){//在查找内容的基础上删除
changedUpdate(arg0);
publicvoidremoveUpdate(DocumentEventarg0){//在查找内容的基础上删除
}
2.3.3功能分析
经过试验,测试,改进,以及再测试,该查找功能能完善地实现查找的功能,精确定位到关键字,符合查找的规则
2.4自动滚屏
2.4.1功能实现
2.4.2功能设计
Timertimer=newTimer(delay,newActionListener(){
publicvoidactionPerformed(ActionEventevt){
jsb.setValue(jsb.getValue()+jsb.getUnitIncrement());
}//设置滚动条的值
textArea.addMouseListener(newMouseListener(){
//监听鼠标的点击数,执行相应的操作P252
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==2){//滚屏
//timer.start();
count=1;
//为的是及底部的“滚屏按钮对应”
timer.start();
roll.setText("
暂停滚屏"
if(e.getClickCount()==1){//停止滚屏
//timer.stop();
count=0;
timer.stop();
自动滚屏"
}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmousePressed(MouseEvente){}
publicvoidmouseReleased(MouseEvente){}
或者:
roll.addActionListener(newActionListener(){
if((++count)%2==1){//滚屏
}else{//停止滚屏
2.4.3功能分析
经过试验,测试,改进,以及再测试,点击窗体下方的“自动/暂停滚屏”按钮可以实现滚屏或是暂停滚屏。
鼠标双击/单击窗体,可以实现实现滚屏或是暂停滚屏,并且及窗体下方的“自动/暂停滚屏”按钮的文字相互协调、互相一致,保持同步
2.5设计滚屏速度
2.5.1功能实现
2.5.2功能设计
speed.addActionListener(newActionListener(){//滚屏速度的设置
sped.liser();
classSpeedimplementsItemListener{
privateJScrollBarjsb;
privateJFramejfrm;
privateJLabeljlb1;
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.setLayout(newFlowLayout());
jfrm.add(jlb1);
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.addItemListener(this);
//*************************关键
jbt.addActionListener(newActionListener(){//“确定”按钮的监听
jfrm.setVisible(false);
//一旦点击“确定”按钮后对话框马上消失
publicvoiditemStateChanged(ItemEventarg0){
sudu=(Integer)jcbb.getSelectedItem();
jsb.setUnitIncrement(sudu.intValue());
2.5.3功能分析
经过试验及测试,该功能可以实现对滚屏速度的设置,而且设置合理
2.6分页
2.6.1功能实现
2.6.2功能设计
[1]上一页:
PageUp.addActionListener(newActionListener(){//上一页
jspValue=scroll.getVerticalScrollBar().getValue();
scroll.getVerticalScrollBar().setValue(jspValue-=scroll.getHeight());
[2]下一页:
PageDown.addActionListener(newActionListener(){//下一页
scroll.getVerticalScrollBar().setValue(jspValue+=scroll.getHeight())
[3]首页:
HomePage.addActionListener(newActionListener(){//首页
scroll.getVerticalScrollBar().setValue(HEIGHT);
//顶点
[4]尾页:
EndPage.addActionListener(newActionListener(){//尾页
jsb.setValue(jsb.getMaximum());
2.6.3功能分析
经过试验及测试,以上4个功能按钮完全可以实现上下翻页、返回首尾页,满足读者阅读小说的需要
3