Java Swing设计一个简单的记事本

先看一下简单的效果
在这里插入图片描述
打开文件
在这里插入图片描述
保存文件
在这里插入图片描述

笔记本比较简单,主要是为了熟悉Java I/O 流,
下面是代码:

import javax.swing.*;
import java.io.*;
import java.awt.event.*;

public class NotePad extends JFrame implements ActionListener {
    //定义需要的组件
    JTextArea jta = null;
    //菜单
    JMenuBar jmb = null;//菜单栏
    JMenu jm1 = null;//菜单
    JMenu jm2 = null;
    JMenu jm3 = null;

    JMenuItem jmi1 = null;//菜单选项
    JMenuItem jmi2 = null;
    JMenuItem jmi3 = null;

    public static void main(String[] args) {
        new NotePad();
    }

    public NotePad() {
        //初始化相关配置
        jta = new JTextArea();
        jmb = new JMenuBar();
        jm1 = new JMenu("文件");
        jm2 = new JMenu("编辑");

        //设置注册监听事件
        jmi1 = new JMenuItem("打开(O)");
        jmi1.addActionListener(this);//注册监听
        jmi1.setActionCommand("Open");

        jmi2 = new JMenuItem("保存(S)");
        jmi2.addActionListener(this);
        jmi2.setActionCommand("Save");

        jmi3 = new JMenuItem("");
        //放入到JFrame
        this.add(jta);
        //加入菜单
        this.setJMenuBar(jmb);
        //将菜单jm1放如菜单栏jmb中
        jmb.add(jm1);

        //item放入menu
        jm1.add(jmi1);
        jm1.add(jmi2);
        jm1.add(jmi3);

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(1000, 800);
        this.setVisible(true);
    }

    //设置点击事件
    @Override
    public void actionPerformed(ActionEvent e) {
        //判断哪个菜单被选中,并作出相应事件
        if (e.getActionCommand().equals("Open")) {

            //创建文件选择组件
            JFileChooser jfc1 = new JFileChooser();
            jfc1.setDialogTitle("请选择文件");//设置名字
            jfc1.showOpenDialog(null);//打开文件,null表示打开时使用默认属性
            jfc1.setVisible(true);//显示
            String filename = jfc1.getSelectedFile().getAbsolutePath();//得到用户选择文件的绝对路径
            FileReader fr = null;
            BufferedReader br = null;
            try {
                fr = new FileReader(filename);
                br = new BufferedReader(fr);//读取用户选择的文件

                //从文件中读取信息并显示到JTextArea中
                String s = "";
                String all = "";
                while ((s = br.readLine()) != null) {
                    all += s + "\r\n";
                }
                jta.setText(all);
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            } finally {
                try {
                    br.close();
                    fr.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        } else if (e.getActionCommand().equals("Save")) {
            //出现保存对话框
            JFileChooser jfc = new JFileChooser();
            jfc.setDialogTitle("保存为");
            jfc.showSaveDialog(null);//按默认的方式显示
            jfc.setVisible(true);

            //得到用户希望保存的文件路径
            String filename = jfc.getSelectedFile().getAbsolutePath();
            //准备写入到指定文件即可
            BufferedWriter bw = null;
            FileWriter fw = null;
            try {
                fw = new FileWriter(filename);
                bw = new BufferedWriter(fw);


                fw.write(this.jta.getText());
            } catch (IOException ex) {
                ex.printStackTrace();
            } finally {
                try {
                    fw.close();
                    bw.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_45468845/article/details/107333422