admin管理员组文章数量:1612066
2023年12月30日发(作者:)
1.
功能分析
功能逻辑图:
打开文件
文件
退出
字体
格式
颜色
背景颜色
txt
小说阅读器
滚屏速度
查找
查找
帮助信息
帮助
关于
首页
上一页
底部按钮
自动滚屏
下一页
尾页
根据功能逻辑分析图,txt小说阅读器应该具备以下功能:
[1]文件的打开及关闭
[2]字体的设置
[3]查找功能
[4]底部按钮(首页、尾页、上一页,下一页,滚屏)
[5]双击窗体自动滚屏,单击窗体停止滚屏
2. 功能实现、设计,分析
2.1文件的打开
2.1.1功能实现
2.1.2功能设计
实现的关键代码:
[1]监视器:
ionListener(new ActionListener() { //打开
public void actionPerformed(ActionEvent e) {
fileOpen();
}
});
[2]
private void fileOpen() { //文件对话框
int flag=enDialog(this);
if(flag==E_OPTION)
{
//获得该文件
File f=ectedFile();
t(null);
try{
File dir = rentDirectory();
//返回当前目录
String
name=ectedFile().getName();
File file=new File(dir,name);
fileReader = new FileReader(file);
in=new BufferedReader(fileReader);
String s=null;
while((s=ne())!=null){
(s+"n");
}
();
();
etPosition(0);
//让一开始滚动条就在最上方
}
catch(IOException exp){}
}
}
2.1.3 功能分析
经过实验及测试,实现的文件对话框可以正常打开任何文件txt文件,但打开doc文件时会出现乱码的情况
2.2字体的设置
2.2.1功能实现
2.2.2功能设计
实现的关键代码:
[1]监视器:
ionListener(new ActionListener() { //字体设置
public void actionPerformed(ActionEvent e) {
ntHandler();
}
});
[2]
class font { //字体设置
private JTextArea textArea;
private JButton ok, cancel;
private JComboBox fontName, fontSize, fontStyle;
GraphicsEnvironment ge;// 定义系统字体对象
String[] size = { "8", "10", "12", "14", "16", "18", "20", "22",
"24", "26", "28", "32", "36", "48", "72", "96" };
String[] style = { "PLAIN", "BOLD", "ITALIC" };
JFrame jf = new JFrame("字体设置");
public font(JTextArea textArea) {
ea = textArea;
JLabel label1 = new JLabel(" 字体 ");
JLabel label2 = new JLabel(" 字号 ");
JLabel label3 = new JLabel(" 样式 ");
ge =
alGraphicsEnvironment();// 获取系统字体
String[] fontname = ilableFontFamilyNames();
fontName = new JComboBox(fontname);
fontSize = new JComboBox(size);
fontStyle = new JComboBox(style);
ok = new JButton("确定");
cancel = new JButton("取消");
out(new BorderLayout());
JPanel p1 = new JPanel(); //P236
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
(label1);
(label2);
(label3);
(fontName);
(fontSize);
(fontStyle);
(ok);
(cancel);
(p1, ); //布局,放置的位置
(p2, );
(p3, );
e(360, 200);
ation(300, 200);
ible(false);
izable(false);//大小不可调整
}
public void addEventHandler() {
// TODO Auto-generated method stub
ible(true); //由原先的不可见-->可见
ionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String n1 = (String) ectedItem();
int n2 = ectedIndex();
String n3 = (String) ectedItem();
t(new Font(n1, n2,
nt(n3)));
ible(false); //点击“确定”按钮后-->不可见
}
});
ionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ible(false);
// 若是点击了“取消”按钮-->仅仅让对话框消失即可
}
});
}
}
2.2.3 功能分析
实现设置字体的该窗体可以实现设置字体的类型、大小、颜色、是否加粗、倾斜等设置,但当设置为一些字体类型时,文本会出现乱码的情况,原因可能是字体编码不一样导致的
2.3查找功能
2.3.1功能实现
2.3.2功能设计
实现的关键代码:
[1]监视器:
ionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
findtest = new Find(textArea,x,y);
t();
}
});
[2]
import .*;
import .*;
import .*;
import .*;
public class Find implements ActionListener,DocumentListener{
private JFrame jframe;
private JLabel jlabel;
private JTextField jtextFile;
private JButton jbtNext;
private JButton jbtCancel;
JTextArea textArea;
int i=0;
int x,y;
public Find(JTextArea textArea,int x,int y) {
this.x=x;
this.y=y;
ea = textArea;
jframe = new JFrame();
jlabel = new JLabel("查找内容:");
jtextFile= new JTextField(10);
jbtNext = new JButton("查找下一个");
jbtCancel = new JButton("取消");
out(new FlowLayout());
(jlabel);
(jtextFile);
(jbtNext);
(jbtCancel);
nds(x+200,y+200,220, 120);
ible(false);
//table(true);
aultCloseOperation(_ON_CLOSE);
//();
}
void findset() {
ible(true);
ionListener(this);
ionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
ible(false);
}
//一旦点击“取消”按钮后对话框马上消失
t(null);//点击“取消”按钮之后,文本框清空
i=0;//点击“取消”按钮之后,i重新赋值0,即下一次查找从头开始
}
});
(ument()).addDocumentListener(this);
//监视文本框P251
@Override
public void actionPerformed(ActionEvent e) {
String string= t().trim();//获取文本框中的内容
if(!("".equals(string))){ //空字符串与用户输入的字符串作比较 P189
String str=t(); //获取textArea的内容
if(i!=-1) //防止当i=-1时,下面这行代码会把i=-1重新赋值,导致从头再查找-->查找到尾部后不允许从头重新查找
i=f(string,i);//192
if(i>=0){
ectionStart(i);
ectionEnd(i + ());
}
else{
ssageDialog(null,"没有找到 "+string);//消息对话框P285,放置在屏幕中间
}
}else{
}
ssageDialog(null,"输入不能为空");
}
if(i!=(-1)){//为了能继续查找下一个关键字
i+=1;
}
//n(i);
//监听文本框 文本框一旦改变(增加、删除、改变),i=0
@Override
public void changedUpdate(DocumentEvent arg0) { //没有下面两个函数,查找一次到头了就不能再继续查找下一次了(即使修改查找内容)
// TODO Auto-generated method stub
i=0;
}
@Override
public void insertUpdate(DocumentEvent arg0) {//在查找内容的基础上删除
// TODO Auto-generated method stub
changedUpdate(arg0);
}
}
@Override
public void removeUpdate(DocumentEvent arg0) {//在查找内容的基础上删除
// TODO Auto-generated method stub
changedUpdate(arg0);
}
2.3.3功能分析
经过试验,测试,改进,以及再测试,该查找功能能完善地实现查找的功能,精确定位到关键字,符合查找的规则
2.4自动滚屏
2.4.1功能实现
2.4.2功能设计
实现的关键代码:
Timer timer = new Timer(delay, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
ue(ue() + tIncrement());
} //设置滚动条的值
});
seListener(new MouseListener() {
//监听鼠标的点击数,执行相应的操作 P252
public void mouseClicked(MouseEvent e) {
if (ckCount() == 2) { //滚屏
//();
count=1; //为的是与底部的“滚屏按钮对应”
(); //为的是与底部的“滚屏按钮对应”
t("暂停滚屏");
}
if (ckCount() == 1) { //停止滚屏
//();
count=0;
();
t("自动滚屏");
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
或者:
ionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if((++count)%2==1){ //滚屏
();
t("暂停滚屏");
}else{ //停止滚屏
();
t("自动滚屏");
}
}
});
2.4.3功能分析
经过试验,测试,改进,以及再测试,点击窗体下方的“自动/暂停滚屏”按钮可以实现滚屏或是暂停滚屏。鼠标双击/单击窗体,可以实现实现滚屏或是暂停滚屏,并且与窗体下方的“自动/暂停滚屏”按钮的文字相互协调、互相一致,保持同步
2.5设计滚屏速度
2.5.1功能实现
2.5.2功能设计
实现的关键代码:
[1]监视器:
ionListener(new ActionListener() { //滚屏速度的设置
public void actionPerformed(ActionEvent e) {
();
}
});
[2]
import .*;
import .*;
import .*;
class Speed implements ItemListener {
}
private JScrollBar jsb;
private JFrame jfrm;
private JLabel jlb1;
private JButton jbt;
private JComboBox jcbb;
Integer sudu; //速度
Timer timer; //计时器
private Integer msg[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
public Speed(final JScrollBar jsb, final Timer timer) {
= jsb;
= timer;
jfrm = new JFrame();
jlb1 = new JLabel("滚屏速度");
jbt = new JButton("确定");
jcbb = new JComboBox(msg);
out(new FlowLayout());
(jlb1);
(jcbb);
(jbt);
ible(false);
table(true);
aultCloseOperation(_ON_CLOSE);
();
}
void liser() {
ible(true);
mListener(this);//*************************关键
ionListener(new ActionListener() { //“确定”按钮的监听
public void actionPerformed(ActionEvent arg0) {
ible(false); //一旦点击“确定”按钮后对话框马上消失
}
});
}
@Override
public void itemStateChanged(ItemEvent arg0) {
sudu = (Integer) ectedItem();
tIncrement(ue());
}
2.5.3功能分析
经过试验及测试,该功能可以实现对滚屏速度的设置,而且设置合理
2.6分页
2.6.1功能实现
2.6.2功能设计
[1]上一页:
ionListener(new ActionListener() { //上一页
public void actionPerformed(ActionEvent e) {
jspValue=ticalScrollBar().getValue();
ticalScrollBar().setValue(jspValue-=ght());
}
});
[2]下一页:
ionListener(new ActionListener() { //下一页
public void actionPerformed(ActionEvent e) {
jspValue=ticalScrollBar().getValue();
ticalScrollBar().setValue(jspValue+=ght())
}
});
[3]首页:
ionListener(new ActionListener() { //首页
public void actionPerformed(ActionEvent e) {
ticalScrollBar().setValue(HEIGHT);//顶点
}
});
[4]尾页:
ionListener(new ActionListener() { //尾页
public void actionPerformed(ActionEvent e) {
ue(imum());
}
});
2.6.3功能分析
经过试验及测试,以上4个功能按钮完全可以实现上下翻页、返回首尾页,满足读者阅读小说的需要
3. 学习心得
在前期准备过程中,先要策划好自己所要表达的内容,主要实现哪些功能,如上一页、下一页、打开、退出、字体设置,查找等,在编写好这些功能后,又是怎么样在面板中布局这些都是我们事先要考虑的问题,只有这样我们考虑周到了,明白了,才能顺利实现更多的功能,达到事半功倍的效果。
对于java语言编程,我们决不能只看不编写。只有自己亲手做了才能体会到学习java语言编程的快乐以及奥妙,也只有自己亲手做了才能学到更多的知识,自己才可以学会应用java语言的知识来解决我们现实生活中的一些实际问题。
学习java语言已经一个学期了,在这个学期,踉踉跄跄,学得不精,还得再下很大的功夫才能领会到它的博大精深,而我只是学习了皮毛而已,许多人把其一生奉献给它,它是另一个世界的通行证。
通过本项目的练习,发现自己在java基础上还是很薄弱,对一些java类掌握的还不够扎实,对一些知识还不够了解,发现写程序和读程序还是有着本质上的区别,自己敲的代码太少,同时这个程序还不够完善,如分页功能还没有完全实现等等,在以后的java学习中需要更加的用心去学
版权声明:本文标题:Java txt小说阅读器实验报告 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1703866696a75479.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论