Java Gui-设计简单记事本软件

Java实训用Gui做的简单记事本软件,效果如图:

功能:

“文件”菜单,包括“新建”、“打开”、“保存”、“另存为”和“退出”。

  • “新建”如果有文字会让原来文字先保存在新建。
  • “打开”前如果原来也有内容,也可以让原来内容先保存再打开。
  • “保存”如果原来的内容是没有地址的,让用户选择要保存到哪里。如果本来就有地址,就直接保存。
  • “另存为”另外弹出一个文件保存框,让用户要选择哪里。
  • “退出”如果有地址的话会让用户先保存,如果没地址有内容就另存为,如果既没有地址又没有内容直接退出。

 程序代码:

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

public class NotePad extends JFrame implements ActionListener {
    JTextArea jTextArea = null;
    JMenuBar jMenuBar = null; //菜单栏
    //菜单列表
    JMenu file = null;
    JMenu editor = null;
    JMenu help = null;
    //菜单的选项
    JMenuItem newFile = null;
    JMenuItem open = null;
    JMenuItem save = null;
    JMenuItem saveAs = null;
    JMenuItem exit = null;
    JFileChooser jFileChooser = null; //打开
    JFileChooser jFileChooser2 = null;//另存为
    FileReader fileReader = null;//输入流
    FileWriter fileWriter = null;//输出流
    BufferedReader bufferedReader = null; //缓冲输入流
    BufferedWriter bufferedWriter = null; //缓冲输出流
    String address = null;
    //构造器 new组件
    public NotePad(){
        jTextArea = new JTextArea();
        jMenuBar = new JMenuBar();
        file = new JMenu("文件");
        editor = new JMenu("编辑");
        help = new JMenu("帮助");
        newFile = new JMenuItem("新建");
        newFile.addActionListener(this);
        newFile.setActionCommand("新建");
        open = new JMenuItem("打开");
        open.addActionListener(this);
        open.setActionCommand("打开");
        save = new JMenuItem("保存");
        save.addActionListener(this);
        save.setActionCommand("保存");
        saveAs = new JMenuItem("另存为");
        saveAs.addActionListener(this);
        saveAs.setActionCommand("另存为");
        exit = new JMenuItem("退出");
        exit.addActionListener(this);
        exit.setActionCommand("退出");
        jTextArea.setBackground(Color.white);
        this.setJMenuBar(jMenuBar);
        jMenuBar.add(file);
        jMenuBar.add(editor);
        jMenuBar.add(help);
        file.add(newFile);
        file.add(open);
        file.add(save);
        file.add(saveAs);
        file.add(exit);
        this.add(jTextArea);

        this.setTitle("记事本");
        this.setBounds(200,100,800,600);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    public void open(){                      //打开的方法
        //实例化文件选择框
        jFileChooser = new JFileChooser();
        jFileChooser.setDialogTitle("打开");
        jFileChooser.showOpenDialog(null);  //设置父组件为空
        //定义变量保存用户编辑的绝对路径
        address = jFileChooser.getSelectedFile().getAbsolutePath();
        try {
            //实例化文件输入流 从选择这个文件中读取数据
            fileReader = new FileReader(address);
            //实例化字符缓冲输入流
            bufferedReader = new BufferedReader(fileReader);
            //定义str判断输入的字符是否已经为空
            String str = "";
            //定义strAll接受文件的全部信息
            String strAll = "";
            //去缓冲区里面拿我的数据并保存到strAll中
            while((str = bufferedReader.readLine())!=null){ //readLine一行行读取 read 全部读取
                strAll += str + System.lineSeparator();
            }
            //把拿到的数据放到文本框
            jTextArea.setText(strAll);
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }finally {
            try {
                bufferedReader.close();
                fileReader.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void save(){                     //保存的方法
        try {
            fileWriter = new FileWriter(address);
            bufferedWriter = new BufferedWriter(fileWriter);
            bufferedWriter.write(jTextArea.getText());
        } catch (IOException ex) {
            ex.printStackTrace();
        }finally {
            try {
                bufferedWriter.close();
                fileWriter.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }

    public void saveAs(){                  //另存为的方法
        jFileChooser2 = new JFileChooser();
        jFileChooser2.setDialogTitle("保存");
        if (jFileChooser2.showSaveDialog(this) == JFileChooser.APPROVE_OPTION){
            address = jFileChooser2.getSelectedFile().getAbsolutePath();
        }
        jFileChooser2.setVisible(true);
        save();
    }

    @Override
    public void actionPerformed(ActionEvent e) {


        if (e.getActionCommand().equals("新建")){
            if (jTextArea.getText().length()!=0){
                if (address==null){
                    saveAs();
                }else {
                    save();
                }
                jTextArea.setText("");
                address = null;
            }
        }

        if (e.getActionCommand().equals("打开")){
            if (jTextArea.getText().length()!=0){
                if (address==null){
                    saveAs();
                }else {
                    save();
                }
                jTextArea.setText("");
            }
            open();
        }

        if (e.getActionCommand().equals("保存")){
            if(address == null){
                saveAs();
            }else{
                save();
            }
        }

        if (e.getActionCommand().equals("另存为")){
            saveAs();
        }

        if (e.getActionCommand().equals("退出")){
            int value=JOptionPane.showConfirmDialog(null,"你确定要退出吗?");
            if (value==JOptionPane.YES_OPTION) {
                if (address != null) {
                    save();
                }
                if (address == null) {
                    if (jTextArea.getText().length() != 0) {
                        saveAs();
                    }
                }
                System.exit(0);
            }
        }
    }
}

测试类代码:

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

如果对你有帮助,请点赞、收藏,谢谢。你的鼓励是对我最大的支持。 

  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卒获有所闻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值