java简易记事本开发

来源:互联网 发布:淘宝天猫分销平台 编辑:程序博客网 时间:2024/06/04 19:46

今天闲来没事,自己写了一个简易的记事本,需要java GUI编程,一个文本输入框JTextArea,一条菜单条JMenuBar,两个JMenu,两个JMenuItem,然后就是模仿你自己电脑自带的记事本那样大致写,模仿他的布局。利用java中的文件操作,实现记事本的功能。(因为这个记事本就是对文本的操作,自己用BufferedReader,BufferedWriter,效率高)

这里我先把代码附在这里:

package com.notepad;/* * 我的记事本(功能+开发) */import java.io.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class Note extends JFrame implements ActionListener{//创建组件JTextArea jta = null;//创建菜单条JMenuBar jmb = null;//第一个JMenueJMenu jm1 = null;//第二个JMenueJMenu jm2 = null;//定义JMenuItem(JMenue里边具体的选项)JMenuItem jmi1 = null;JMenuItem jmi2 = null;//主函数public static void main(String[] args) {Note n1 = new Note();}//在构造函数中完成初始化public Note(){jta = new JTextArea();jmb = new JMenuBar();jm1 = new JMenu("文件");jm2 = new JMenu("编辑");jmi1 = new JMenuItem("打开");jmi2 = new JMenuItem("保存");//设置JTextArea的字体Font mf = new Font("隶书",Font.PLAIN,20);jta.setFont(mf);//注册监听jmi1.addActionListener(this);jmi2.addActionListener(this);//设置监听名称jmi1.setActionCommand("open");jmi2.setActionCommand("save");//设置助记符jmi1.setMnemonic('F');jmi2.setMnemonic('S');//添加JMenuBar,并且逐级添加菜单this.setJMenuBar(jmb);jmb.add(jm1);jmb.add(jm2);jm1.add(jmi1);jm1.add(jmi2);//添加this.add(jta);this.setSize(800,600);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}@Overridepublic void actionPerformed(ActionEvent arg0) {if(arg0.getActionCommand().equals("open")){JFileChooser jfc1 = new JFileChooser();//设置名字jfc1.setDialogTitle("请选择文件...");//使用默认方式jfc1.showOpenDialog(null);//显示jfc1.setVisible(true);//得到用户选择文件的全路径String filename1 = jfc1.getSelectedFile().getAbsolutePath();//System.out.println(filename);BufferedReader br = null;FileReader fr = null;char[] buf = new char[1024];try{fr = new FileReader(filename1);br = new BufferedReader(fr);String s = "";String allCon = "";//从文件中读取信息,并显示在JTextArea控件中while((s=br.readLine())!=null){allCon = allCon + s + "\r\n";}jta.setText(allCon);}catch(Exception e){e.printStackTrace();}finally{try {//文件流一定要关闭br.close();fr.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}else if(arg0.getActionCommand().equals("save")){//出现保存对话框JFileChooser jfc = new JFileChooser();jfc.setDialogTitle("另存为...");//按照默认方式显示jfc.showSaveDialog(null);jfc.setVisible(true);//得到文件全路径String filename2 = jfc.getSelectedFile().getAbsolutePath();//准备到写入指定文件即可BufferedWriter bw = null;FileWriter fw = null;try{fw =new FileWriter(filename2);bw = new BufferedWriter(fw);bw.write(this.jta.getText());}catch(Exception e){e.printStackTrace();}finally{try {bw.close();fw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

我在代码里加了很多的注释,也是自己写程序的理解吧,但是自己在写的时候还是遇到问题了,在关闭文件流的时候,关闭的顺序不对会报异常,因为用到了BufferedReader
和BufferedWriter,所以还要使用FileReader和FileWriter,在关闭文件流的时候,先要关闭BufferedReader,BufferedWriter的对象,然后关闭FileReader,FileWriter的对象,否则
就会报异常Stream closed(流关闭)导致文件无法正常操作。这里我也想介绍一下JFileChooser的简单用法,这就是我们打开文件,或者保存文件显示选择的窗口,然后进行相应
的操作。因为涉及到相应的按钮点击之后响应操作,就需要添加事件监听(注意:要添加时间监听,并且设置时间监听的名称),在程序里自己还简单的设计了两个助记符,就是
打开文件,保存问价时的文件助记符(Alt+shift+字母)。
打开文件的窗口时方法showOpenDialog(null)(对象调用,默认方式),保存窗口showSaveDialog(null,默认方式)(对象调用),注意还要设置他们的可视化,就是显示出来
setVisible(true),然后相关的文件操作我自己就不在这里过多的赘述了,在程序中已经很详细的解释了。
这里是相应的截图:

自己写的,测试运行成功,希望对你有帮助。如果遇到什么问题,希望评论,一起解决。

原创粉丝点击