java记事本程序的编写实录.docx
《java记事本程序的编写实录.docx》由会员分享,可在线阅读,更多相关《java记事本程序的编写实录.docx(15页珍藏版)》请在冰豆网上搜索。
java记事本程序的编写实录
19.3 记事本的编写
12月18日,多云
API手册在手,帮我解决了很多问题,我步入了正式的编码阶段。
一个简单的记事本,看似只用一个Java源文件就实现了其全部的功能,但实际上却是一个复杂的过程。
19.3.1 插入包
记事本需要插入哪些包呢?
要操作文件夹,需要I/O包,需要设置字体,需要Awt下面的Fornt,当然窗口程序更需要AWT和Swing包。
在程序中需要编写如下代码,具体如下:
1.import java.io.*;
2.import java.awt.*;
3.import java.awt.event.*;
4.import javax.swing.*;
5.import java.awt.Font.*;
6.import javax.swing.event.*;
7.import javax.swing.filechooser.*;
19.3.2 新建文件和打开文件
在记事本里,新建文件和打开文件是必不可少的内容,如何实现它呢?
用户需要编写监听程序,对用户的动作进行监听,然后给出相应的反应。
其新建文件和打开文件的监听代码如下:
1.public class Jishiben extends JFrame
2.{
3.static JTextArea ta;
4.static JFrame app;
5.static JLabel jl;
6.static JLabel jl2;
7.//各菜单的监听均采用内部类实现,子菜单的监听采用内部类的内部类
8.class xianjian implements ActionListener
9.//新建文件监听
10.{
11. public void actionPerformed(ActionEvent e)
12. {
13. ta.setText("");//将ta 的Text设置为空字符串,实现新建
14. }
15.}
16.class dakai implements ActionListener
17.//打开文件监听
18.{
19. public void actionPerformed(ActionEvent e)
20. {
21. JFileChooser jf=new JFileChooser();
22. javax.swing.filechooser.FileFilter filter
= new FileNameExtensionFilter ("*.txt", "txt");
23. jf.addChoosableFileFilter(filter);
24. //文件过滤默认仅显示TXT文件,选择所有文件才全显示
25. jf.showOpenDialog(Jishiben.this);//显示打开文件对话框
26. String fileName=jf.getSelectedFile().
getAbsolutePath().trim();
27. //获取文件路径及文件名
28. try{
29. BufferedReader br=new BufferedReader(new FileReader(fileName));
30. String S;
31. for(S=br.readLine();S!
=null;S=br.readLine())//按行读取文件
32. ta.append(S+"\n");//写入ta,并执行换行
33. br.close();
34. }
35. catch(IOException a)
36. {
37. System.out.println("Open file error!
");
38. a.printStackTrace();
39. }
40.
41. }
42.}
19.3.3 保存文件
完成文档的编辑后,通常需要将编辑的文件保存起来,其保存的方法十分简单,用户只需要编写程序对用户的动作进行监听即可,其代码如下:
1.class baocun implements ActionListener{
2.//注:
保存文件后,如果用Windows自带的记事本打开时发现只有一行代码,
3.//这是因为此文件是用记事本创建的,如果用此记事本打开显示就正常了。
4. public void actionPerformed(ActionEvent e){
5. JFileChooser jf = new JFileChooser();
6. javax.swing.filechooser.FileFilter filter =
new FileNameExtensionFilter ("*.txt", "txt");
7. jf.addChoosableFileFilter(filter);
8. //文件过滤默认保存为TXT文件,选择所有的文件时需加后缀
9. jf.showSaveDialog(Jishiben.this);//显示保存文件对话框
10. String fileName=jf.getSelectedFile().
getAbsolutePath().trim();
11. //获取保存文件的路径及输入的文件名
12. if(fileName!
=null)
13. try{
14. BufferedWriter bw=new BufferedWriter(new
FileWriter(fileName+".txt"));
15. //自动加上.txt的后缀
16. PrintWriter pw=new PrintWriter(bw);
17. pw.println(ta.getText());//写入文件
18. bw.close();
19. }
20. catch (IOException a) {
21. System.out.println("Save file error!
");
22. a.printStackTrace();
23. }
24. }
25.}
26.//退出程序监听
27.class tuichu implements ActionListener{
28. public void actionPerformed(ActionEvent e) {
29. System.exit(0);//退出程序
30. }
31.}
19.3.4 文件操作
在基本的编辑菜单下有5个命令,这5个命令分别是剪切、复制、粘贴、全选、删除,如图19-5所示,要实现这5个命令的功能十分简单,下面将介绍代码的编写。
图19-5 编辑下的菜单命令
其代码如下:
1.//剪切的监听
2.class jianqie implements ActionListener
3.{
4. public void actionPerformed(ActionEvent e)
5. {
6. ta.cut();//剪切
7. }
8.}
9.//复制的监听
10.class fuzhi implements ActionListener
11.{
12. public void actionPerformed(ActionEvent e)
13. {
14. ta.copy();//复制
15. }
16.}
17.//粘贴的监听
18.class zhantie implements ActionListener
19.{
20. public void actionPerformed(ActionEvent e)
21. {
22. ta.paste();//粘贴
23. }
24.}
25.//全选的监听
26.class quanxuan implements ActionListener
27.{
28. public void actionPerformed(ActionEvent e)
29. {
30. ta.selectAll();//选择全部
31. }
32.}
33.//删除的监听
34.class shanchu implements ActionListener
35.{
36. public void actionPerformed(ActionEvent e)
37. {
38. ta.replaceRange("",ta.getSelectionStart(),ta.getSelectionEnd());
39. //用空字符串替换选择部分,实现删除功能
40. }
41.}
19.3.5 字体的处理
在记事本中,用户可以设置字体,其设置方法也很简单,设置对话框如图19-6所示。
图19-6 设置字体
其代码如下:
1.//字体的监听
2.class ziti implements ActionListener
3.{
4. JComboBox cb1;
5. JComboBox cb2;
6. JComboBox cb3;
7. Font[]fa={new Font("宋体",java.awt.Font.BOLD,
16),new Font("楷体",java.awt.Font.ITALIC, 16),
new Font("Arial",java.awt.Font.PLAIN, 16)};
8. Font[]fb={new Font("宋体",java.awt.Font.BOLD,
16),new Font("宋体",java.awt.Font.ITALIC, 16),
new Font("宋体",java.awt.Font.PLAIN, 16)};
9. Font[]ft={new Font("宋体",java.awt.Font.PLAIN,
16),new Font("宋体",java.awt.Font.PLAIN, 25),new
Font("宋体",java.awt.Font.PLAIN, 10)};
10. class xuanziti implements ItemListener
11.//内部类,用来监