Java txt小说阅读器实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// 若是点击了“取消”按钮-->仅仅让对话框消失即可 }
}); } }
2.2.3 功能分析 实现设置字体的该窗体可以实现设置字体的类型、大小、颜色、是否加粗、
倾斜等设置,但当设置为一些字体类型时,文本会出现乱码的情况,原因可能 是字体编码不一样导致的
2.3 查找功能 2.3.1 功能实现
2.3.2 功能设计
public font(JTextArea textArea) {
this.textArea = textArea;
JLabel label1 = new JLabel(" 字体
");
JLabel label2 = new JLabel(" 字号
");
JLabel label3 = new JLabel(" 样式
public void actionPerformed(ActionEvent e) { font1.addEventHandler();
} }); [2] class font { //字体设置 private JTextArea textArea; private JButton ok, cancel; private JComboBox fontName, fontSize, fontStyle;
}); [2]
private void fileOpen() { //文件对话框 int flag=fileDialog.showOpenDialog(this); if(flag==JFileChooser.APPROVE_OPTION)
{ //获得该文件 File f=fileDialog.getSelectedFile(); textArea.setText(null); try{ File dir = fileDialog.getCurrentDirectory();
String str=textArea.getText(); //获取 textArea 的内容
if(i!=-1) //防止当 i=-1 时,下面这行代码会把 i=-1 重新赋值,导致从 头再查找-->查找到尾部后不允许从头重新查找
i=str.indexOf(string,i);//192 if(i>=0){
public void actionPerformed(ActionEvent arg0) { jframe.setVisible(false); //一旦点击“取消”按钮后对话框马上消失 jtextFile.setText(null);//点击“取消”按钮之后,文本框清空 i=0;//点击“取消”按钮之后,i 重新赋值 0,即下一次查找从头开始
public Find(JTextArea textArea,int x,int y) { this.x=x; this.y=y; this.textArea = textArea; jframe = new JFrame(); jlabel = new JLabel("查找内容:"); jtextFile= new JTextField(10); jbtNext = new JButton("查找下一个"); jbtCancel = new JButton("取消"); jframe.setLayout(new FlowLayout());
} });
(jtextFile.getDocument()).addDocumentListener(this); //监视文本框 P251
}
@Override public void actionPerformed(ActionEvent e) {
String string= jtextFile.getText().trim();//获取文本框中的内容 if(!("".equals(string))){ //空字符串与用户输入的字符串作比较 P189
实现的关键代码: [1]监视器: find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { findtest = new Find(textArea,x,y); findtest.findset();
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(); } void findset() { jframe.setVisible(true); jbtNext.addActionListener(this); jbtCancel.addActionListener(new ActionListener() {
ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String n1 = (String) fontName.getSelectedItem(); int n2 = fontStyle.getSelectedIndex(); String n3 = (String) fontSize.getSelectedItem(); textArea.setFont(new Font(n1, n2,
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);
//让一开始滚动条就在最上方 } catch(IOException exp){} } }
2.1.3 功能分析 经过实验及测试,实现的文件对话框可以正常打开任何文件 txt 文件,但 打开 doc 文件时会出现乱码的情况
2.2 字体的设置 2.2.1 功能实现
2.2.2 功能设计
实现的关键代码: [1]监视器: font.addActionListener(new ActionListener() {//字体设置
ok = new JButton("确定"); cancel = new JButton百度文库"取消");
jf.setLayout(new BorderLayout());
JPanel p1 = new JPanel(); //P236 JPanel p2 = new JPanel(); JPanel p3 = new JPanel();
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("字体设置");
//布局,放置的位置
jf.setSize(360, 200); jf.setLocation(300, 200); jf.setVisible(false); jf.setResizable(false);//大小不可调整 }
public void addEventHandler() { // TODO Auto-generated method stub jf.setVisible(true); //由原先的不可见-->可见
} }); [2] import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;
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;
1. 功能分析
功能逻辑图:
文件
格式
txt 小 说
查找 阅 读 器
帮助
底部按钮
打开文件 退出 字体 颜色 背景颜色 滚屏速度
查找 帮助信息
关于
首页
上一页
自动滚屏 尾页
下一页
根据功能逻辑分析图,txt 小说阅读器应该具备以下功能: [1]文件的打开及关闭 [2]字体的设置 [3]查找功能 [4]底部按钮(首页、尾页、上一页,下一页,滚屏) [5]双击窗体自动滚屏,单击窗体停止滚屏
");
ge = GraphicsEnvironment.getLocalGraphicsEnvironment();// 获取系统字体
String[] fontname = ge.getAvailableFontFamilyNames();
fontName = new JComboBox(fontname); fontSize = new JComboBox(size); fontStyle = new JComboBox(style);
Integer.parseInt(n3))); jf.setVisible(false); //点击“确定”按钮后-->不可
见 }
}); cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { jf.setVisible(false);
textArea.setSelectionStart(i); textArea.setSelectionEnd(i + string.length()); } else{ JOptionPane.showMessageDialog(null,"没有找到 "+string);// 消息对话框 P285,放置在屏幕中间 } }else{ JOptionPane.showMessageDialog(null,"输入不能为空"); }
//返回当前目录 String
name=fileDialog.getSelectedFile().getName(); File file=new File(dir,name); fileReader = new FileReader(file); in=new BufferedReader(fileReader); String s=null; while((s=in.readLine())!=null){ textArea.append(s+"\n"); } in.close(); fileReader.close(); textArea.setCaretPosition(0);
2. 功能实现、设计,分析 2.1 文件的打开
2.1.1 功能实现
2.1.2 功能设计
实现的关键代码: [1]监视器:
open.addActionListener(new ActionListener() { //打开 public void actionPerformed(ActionEvent e) { fileOpen(); }
}); } }
2.2.3 功能分析 实现设置字体的该窗体可以实现设置字体的类型、大小、颜色、是否加粗、
倾斜等设置,但当设置为一些字体类型时,文本会出现乱码的情况,原因可能 是字体编码不一样导致的
2.3 查找功能 2.3.1 功能实现
2.3.2 功能设计
public font(JTextArea textArea) {
this.textArea = textArea;
JLabel label1 = new JLabel(" 字体
");
JLabel label2 = new JLabel(" 字号
");
JLabel label3 = new JLabel(" 样式
public void actionPerformed(ActionEvent e) { font1.addEventHandler();
} }); [2] class font { //字体设置 private JTextArea textArea; private JButton ok, cancel; private JComboBox fontName, fontSize, fontStyle;
}); [2]
private void fileOpen() { //文件对话框 int flag=fileDialog.showOpenDialog(this); if(flag==JFileChooser.APPROVE_OPTION)
{ //获得该文件 File f=fileDialog.getSelectedFile(); textArea.setText(null); try{ File dir = fileDialog.getCurrentDirectory();
String str=textArea.getText(); //获取 textArea 的内容
if(i!=-1) //防止当 i=-1 时,下面这行代码会把 i=-1 重新赋值,导致从 头再查找-->查找到尾部后不允许从头重新查找
i=str.indexOf(string,i);//192 if(i>=0){
public void actionPerformed(ActionEvent arg0) { jframe.setVisible(false); //一旦点击“取消”按钮后对话框马上消失 jtextFile.setText(null);//点击“取消”按钮之后,文本框清空 i=0;//点击“取消”按钮之后,i 重新赋值 0,即下一次查找从头开始
public Find(JTextArea textArea,int x,int y) { this.x=x; this.y=y; this.textArea = textArea; jframe = new JFrame(); jlabel = new JLabel("查找内容:"); jtextFile= new JTextField(10); jbtNext = new JButton("查找下一个"); jbtCancel = new JButton("取消"); jframe.setLayout(new FlowLayout());
} });
(jtextFile.getDocument()).addDocumentListener(this); //监视文本框 P251
}
@Override public void actionPerformed(ActionEvent e) {
String string= jtextFile.getText().trim();//获取文本框中的内容 if(!("".equals(string))){ //空字符串与用户输入的字符串作比较 P189
实现的关键代码: [1]监视器: find.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { findtest = new Find(textArea,x,y); findtest.findset();
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(); } void findset() { jframe.setVisible(true); jbtNext.addActionListener(this); jbtCancel.addActionListener(new ActionListener() {
ok.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String n1 = (String) fontName.getSelectedItem(); int n2 = fontStyle.getSelectedIndex(); String n3 = (String) fontSize.getSelectedItem(); textArea.setFont(new Font(n1, n2,
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);
//让一开始滚动条就在最上方 } catch(IOException exp){} } }
2.1.3 功能分析 经过实验及测试,实现的文件对话框可以正常打开任何文件 txt 文件,但 打开 doc 文件时会出现乱码的情况
2.2 字体的设置 2.2.1 功能实现
2.2.2 功能设计
实现的关键代码: [1]监视器: font.addActionListener(new ActionListener() {//字体设置
ok = new JButton("确定"); cancel = new JButton百度文库"取消");
jf.setLayout(new BorderLayout());
JPanel p1 = new JPanel(); //P236 JPanel p2 = new JPanel(); JPanel p3 = new JPanel();
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("字体设置");
//布局,放置的位置
jf.setSize(360, 200); jf.setLocation(300, 200); jf.setVisible(false); jf.setResizable(false);//大小不可调整 }
public void addEventHandler() { // TODO Auto-generated method stub jf.setVisible(true); //由原先的不可见-->可见
} }); [2] import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;
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;
1. 功能分析
功能逻辑图:
文件
格式
txt 小 说
查找 阅 读 器
帮助
底部按钮
打开文件 退出 字体 颜色 背景颜色 滚屏速度
查找 帮助信息
关于
首页
上一页
自动滚屏 尾页
下一页
根据功能逻辑分析图,txt 小说阅读器应该具备以下功能: [1]文件的打开及关闭 [2]字体的设置 [3]查找功能 [4]底部按钮(首页、尾页、上一页,下一页,滚屏) [5]双击窗体自动滚屏,单击窗体停止滚屏
");
ge = GraphicsEnvironment.getLocalGraphicsEnvironment();// 获取系统字体
String[] fontname = ge.getAvailableFontFamilyNames();
fontName = new JComboBox(fontname); fontSize = new JComboBox(size); fontStyle = new JComboBox(style);
Integer.parseInt(n3))); jf.setVisible(false); //点击“确定”按钮后-->不可
见 }
}); cancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { jf.setVisible(false);
textArea.setSelectionStart(i); textArea.setSelectionEnd(i + string.length()); } else{ JOptionPane.showMessageDialog(null,"没有找到 "+string);// 消息对话框 P285,放置在屏幕中间 } }else{ JOptionPane.showMessageDialog(null,"输入不能为空"); }
//返回当前目录 String
name=fileDialog.getSelectedFile().getName(); File file=new File(dir,name); fileReader = new FileReader(file); in=new BufferedReader(fileReader); String s=null; while((s=in.readLine())!=null){ textArea.append(s+"\n"); } in.close(); fileReader.close(); textArea.setCaretPosition(0);
2. 功能实现、设计,分析 2.1 文件的打开
2.1.1 功能实现
2.1.2 功能设计
实现的关键代码: [1]监视器:
open.addActionListener(new ActionListener() { //打开 public void actionPerformed(ActionEvent e) { fileOpen(); }