JavaSwing-记事本

记事本基本功能简单实现

1、新建
2、打开
3、保存
4、另存
5、退出

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

import static java.lang.System.exit;

/**
 * @program: JavaWork
 * @description: 记事本
 * @author: Tom里的同学
 * @mail: 3421824066@qq.com
 * @create: 2021-12-18 -2:39
 */
public class Test10 implements ActionListener {

    //---------------------------------------------
    JFrame frame;//窗体
    JTextArea text;//多行文本框
    JScrollPane jScrollPane;//滚动条
    JMenuBar menuBar;//菜单栏
    JMenu menuFile, menuedit, menuhelp;//菜单
    JMenuItem newitem, openitem, exititem, saveitem, save_asitem;//菜单项
    File file;//当前选择文件


    //------------------------------------------------------------------------------
    public Test10() {
    //窗体初始化
        frame = new JFrame("记事本");
        frame.setSize(new Dimension(600, 700));
        frame.setLocation(new Point(200, 100));
        frame.setBackground(Color.white);
        frame.setFont(new Font("Times New Roman",Font.PLAIN,15));
    //文本框初始化
        text = new JTextArea();
        text.setEnabled(true);

        jScrollPane = new JScrollPane(text);
        frame.getContentPane().add(jScrollPane);//添加滚动条
        menuBar = new JMenuBar();
        //菜单初始化
        menuFile = new JMenu("文件");
        menuedit = new JMenu("编辑");
        menuhelp = new JMenu("帮助");
        //菜单项
        newitem = new JMenuItem("新建(N)");
        openitem = new JMenuItem("打开(O)");
        exititem = new JMenuItem("退出(X)");
        saveitem = new JMenuItem("保存(S)");
        save_asitem = new JMenuItem("另存为(A)");
        //为菜单项设置助记符
        newitem.setMnemonic('N');
        openitem.setMnemonic('O');
        exititem.setMnemonic('X');
        saveitem.setMnemonic('S');
        save_asitem.setMnemonic('A');
//快捷键设置
        newitem.setAccelerator(KeyStroke.getKeyStroke('N', InputEvent.CTRL_DOWN_MASK));
        openitem.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_DOWN_MASK));
        saveitem.setAccelerator(KeyStroke.getKeyStroke('S',InputEvent.CTRL_DOWN_MASK));
        save_asitem.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK + InputEvent.SHIFT_DOWN_MASK));
//将菜单项添加到菜单
        menuFile.add(newitem);
        menuFile.add(openitem);
        menuFile.add(saveitem);
        menuFile.add(save_asitem);
        menuFile.addSeparator();
        menuFile.add(exititem);
//将菜单添加到菜单栏
        menuBar.add(menuFile);
        menuBar.add(menuedit);
        menuBar.add(menuhelp);
//将才当栏添加到窗体
        frame.setJMenuBar(menuBar);
//为菜单项添加监听器
        newitem.addActionListener(this);
        openitem.addActionListener(this);
        save_asitem.addActionListener(this);
        saveitem.addActionListener(this);
        exititem.addActionListener(this);
//设置窗体可见
        frame.setVisible(true);

    }
//事件处理
    public void actionPerformed(ActionEvent evn) {
        Object obj = evn.getSource();//获取事件源
        if (obj instanceof JMenuItem) {//判断事件源是否是JMenuItem类型的
            JMenuItem item = (JMenuItem) obj;

            if (item == newitem) {
//新建
                new Test10();

            } else if (item == openitem) {
//打开
                setOpenitem();

            } else if (item == saveitem) {
//保存
                setSaveitem();

            } else if (item == save_asitem) {
//另存
                setSave_asitem();

            } else if (item == exititem) {
//退出
                exit(1);
            }
        }

    }
    public void setOpenitem() {
        JFileChooser chooser = new JFileChooser();//文件选择框
        chooser.showOpenDialog(null);

        file = chooser.getSelectedFile();

        try {
        //输入流
            InputStream fis = new FileInputStream(file);

            byte[] b = new byte[fis.available()];
            fis.read(b);

            text.setText(new String(b));

            fis.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void setSaveitem(){
        if(file==null)
            setSave_asitem();//如果没有指定文件,另存
        try{
        //输出流
            OutputStream fos=new FileOutputStream(file);

            byte[] b=text.getText().getBytes();
            fos.write(b);
            //fos.write(text.getText().getBytes());
            fos.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void setSave_asitem(){
        JFileChooser chooser=new JFileChooser();
        chooser.showSaveDialog(null);

        file=chooser.getSelectedFile();
        try {
            OutputStream fos=new FileOutputStream(file);
            byte[] b=text.getText().getBytes();
            fos.write(b);

            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    public static void main(String[] args) {
        new Test10();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tom里的同学

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

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

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

打赏作者

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

抵扣说明:

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

余额充值