Java简单记事本

来源:互联网 发布:炫舞炸家族邀请软件 编辑:程序博客网 时间:2024/05/17 08:48

javaGUI编程、事件监听、JFileChooser组件相关知识

/** * 功能:记事本 * 日期:2017.2.13 */package com.testFile;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.*;public class Txt extends JFrame implements ActionListener{    //定义需要的组件    JTextArea jta=null;    //菜单条    JMenuBar jmb=null;    //第一JMenu    JMenu jm1;    //菜单下的目录    JMenuItem jmi1,jmi2,jmi3;    //文件路径    String filename;    public static void main(String[] args) {        // TODO Auto-generated method stub        Txt t=new Txt();    }    //构造函数    public Txt()    {        //创建jta,文本空间        jta=new JTextArea();        //菜单条        jmb=new JMenuBar();        //第一JMenu        jm1=new JMenu("文件(F)");        jm1.setMnemonic('f');        //菜单下的目录        jmi1=new JMenuItem("打开");        //注册监听(事件监听者为本类)        jmi1.addActionListener(this);        //设置此组件激发的操作事件的名称        jmi1.setActionCommand("open");        jmi2=new JMenuItem("保存");        //注册监听        jmi2.addActionListener(this);        //设置此组件激发的操作事件的名称        jmi2.setActionCommand("save");        jmi3=new JMenuItem("另存为");        //注册监听        jmi3.addActionListener(this);        //设置此组件激发的操作事件的名称        jmi3.setActionCommand("save as");        //添加组件        //输入面板        this.add(jta);        //添加菜单条        this.setJMenuBar(jmb);        //添加第一个菜单        jmb.add(jm1);        //添加菜单下拉        jm1.add(jmi1);        jm1.add(jmi2);        jm1.add(jmi3);        this.setTitle("记事本");        this.setSize(600, 450);        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        this.setVisible(true);    }    @Override    public void actionPerformed(ActionEvent e) {        // TODO Auto-generated method stub        //判断是哪个菜单被选中        if(e.getActionCommand().equals("open"))        {//          System.out.println("open");            /**             * 隆重给大家推荐JFileChooser组件             *              */            //文件选择组件            JFileChooser jfc1=new JFileChooser();            //设置名字            jfc1.setDialogTitle("请选择文件.....");            //默认方式            jfc1.showOpenDialog(null);            //显示            jfc1.setVisible(true);            //的到用户选择的路径            filename=jfc1.getSelectedFile().getAbsolutePath();            //读取文件并显示            FileReader fr=null;            BufferedReader br=null;            try {                fr=new FileReader(filename);                br=new BufferedReader(fr);                //逐行读取到的字符串                String s="";                //最后的字符串                String allcon="";                //循环读取,读完则为空                while((s=br.readLine())!=null)                {                    allcon+=s+"\r\n";                }                //将读取到的字符串显示在JTextArea                jta.setText(allcon);            } catch (Exception e1) {                // TODO Auto-generated catch block                e1.printStackTrace();            }finally            {                try {                    fr.close();                    br.close();                } catch (IOException e1) {                    // TODO Auto-generated catch block                    e1.printStackTrace();                }            }            }        else if(e.getActionCommand().equals("save"))            {                //如果按下的是保存按钮                FileWriter fw=null;                BufferedWriter bw=null;                try {                    fw=new FileWriter(filename);                    bw=new BufferedWriter(fw);                    //需要保存的字符                    String lastcon=jta.getText();                    //System.out.println(lastcon);                    bw.write(lastcon);                } catch (IOException e1) {                    // TODO Auto-generated catch block                    e1.printStackTrace();                }finally                {                    try {                        //刷新该流的缓冲                        fw.flush();                        bw.flush();                        fw.close();                        bw.close();                    } catch (IOException e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                }            }            else if(e.getActionCommand().equals("save as"))            {                //如果按下的键是另存为                //文件选择组件                JFileChooser jfc2=new JFileChooser();                //设置标题                jfc2.setDialogTitle("另存为...");                //默认方式                jfc2.showSaveDialog(null);                //显示                jfc2.setVisible(true);                //获得保存路径                String file=jfc2.getSelectedFile().getAbsolutePath();                //保存文件                FileWriter fw=null;                BufferedWriter bw=null;                try {                    fw=new FileWriter(file);                    bw=new BufferedWriter(fw);                    bw.write(this.jta.getText());                } catch (Exception e1) {                    // TODO Auto-generated catch block                    e1.printStackTrace();                }finally                {                    try {                        //刷新该流的缓冲。                        fw.flush();                        bw.flush();                        //关闭该流前先刷新该流的缓存,否则就会抛出异常                        fw.close();                        bw.close();                    } catch (Exception e1) {                        // TODO Auto-generated catch block                        e1.printStackTrace();                    }                   }            }        }}