Java简单记事本

版权声明:本文为博主原创文章,转载注明出处。 https://blog.csdn.net/Alger_/article/details/74471021

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();
                    }   
                }
            }
        }
}

猜你喜欢

转载自blog.csdn.net/Alger_/article/details/74471021