小小事记事本

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package notebook;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

/**
 *
 * @author Administrator
 */
public class TestNoteBook {

    JFrame frame;
    JFileChooser fileChooser;
    JScrollPane scrollPane;
    JPanel panel;
    JTextArea textArea;
    JMenuBar menuBar;
    JMenu menu_File, menu_Write, menu_Style, menu_Look, menu_Help;
    JMenuItem menuItem_Create, menuItem_Open, menuItem_Conservt,
            menuItem_ConservtTo, menuItem_Exit, menuItem_Reject,
            menuItem_X, menuItem_C, menuItem_V, menuItem_Delete,
            menuItem_turnLine, menuItem_Words, menuItem_State,
            menuItem_AboutNoteBook, menuItem_AboutWindows;
    JLabel labelState;
    JPopupMenu popupMenu;//弹出式式菜单
    String path = null;
    String str = null;
    String filename;

    public TestNoteBook() {
        frame = new JFrame("新建 文本文档.txt-记事本");
        fileChooser = new JFileChooser();
        textArea = new JTextArea();
        /*
        设置一个可水平、垂直滚动的滚动面板,将JTextArea放在此面板中
         */
        scrollPane = new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
        //textArea.setFont(new Font("宋体",Font.PLAIN,16));

        menuBar = new JMenuBar();
        labelState = new JLabel();
        panel = new JPanel();
        menu_File = new JMenu("文件(F)");
        menu_Write = new JMenu("编辑(E)");
        menu_Style = new JMenu("格式(O)");
        menu_Look = new JMenu("查看(V)");
        menu_Help = new JMenu("帮助(H)");
        menuItem_Create = new JMenuItem("新建(N)          Ctrl+N");
        menuItem_Open = new JMenuItem("打开(O)            Ctrl+O");
        menuItem_Conservt = new JMenuItem("保存(S)        Ctrl+S");
        menuItem_ConservtTo = new JMenuItem("保存为(A)    Ctrl+A");
        menuItem_Exit = new JMenuItem("退出(X)            Ctrl+X");
        menuItem_Reject = new JMenuItem("撤销             Ctrl+Z");
        menuItem_X = new JMenuItem("剪切                  Ctrl+X");
        menuItem_C = new JMenuItem("复制                  Ctrl+C");
        menuItem_V = new JMenuItem("粘贴                  Ctrl+V");
        menuItem_Delete = new JMenuItem("删除             Del");
        menuItem_turnLine = new JMenuItem("自动换行(W)");
        menuItem_Words = new JMenuItem("字体(F)");
        menuItem_State = new JMenuItem("状态栏(S)");
        menuItem_AboutNoteBook = new JMenuItem("关于记事本(A)");
        menuItem_AboutWindows = new JMenuItem("关于主题(H)");
        popupMenu = menu_Write.getPopupMenu();//弹出获得编辑菜单里面的子菜单

        panel.add(labelState);
        frame.add(panel, BorderLayout.SOUTH);

        frame.add(scrollPane);//将可滚动面板加入frame
        frame.setJMenuBar(menuBar);

        menuBar.add(menu_File);
        menuBar.add(menu_Write);
        menuBar.add(menu_Style);
        menuBar.add(menu_Look);
        menuBar.add(menu_Help);

        menu_File.add(menuItem_Create);
        menu_File.add(menuItem_Open);
        menu_File.add(menuItem_Conservt);
        menu_File.add(menuItem_ConservtTo);
        menu_File.add(menuItem_Exit);

        menu_Write.add(menuItem_Reject);
        menu_Write.add(menuItem_X);
        menu_Write.add(menuItem_C);
        menu_Write.add(menuItem_V);
        menu_Write.add(menuItem_Delete);

        menu_Style.add(menuItem_turnLine);
        menu_Style.add(menuItem_Words);

        menu_Look.add(menuItem_State);

        menu_Help.add(menuItem_AboutNoteBook);
        menu_Help.add(menuItem_AboutWindows);

        frame.setSize(600, 400);
        // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        //编译区鼠标事件监听
        textArea.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseReleased(MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON3) {
                    popupMenu.show(menu_Write, e.getX(), e.getY());//右击后弹出一个编译区的菜单栏的框
                }
            }

            @Override
            public void mouseClicked(MouseEvent e) {//上面的右击完成后,选择一个菜单左击后反应事件
                if (e.getButton() == MouseEvent.BUTTON1) {
                    popupMenu.setVisible(false);//在弹出的选框左击中选择后将弹出的框隐藏
                }
            }
        });
        //编译区的键盘事件监听
        textArea.addKeyListener(new KeyAdapter() {

            @Override
            public void keyTyped(KeyEvent e) {
                labelState.setText("已修改");
                //当键入键盘上的某个建时:说明文件内容能够已经修改
            }
        });
        frame.addWindowListener(new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                isSaveFile();
                //按下关闭按钮时,判断下是否需要保存已修改的内容
            }
        });
        menuItem_Conservt.addActionListener(new ActionListener() {
            /*
            为保存菜单项添加一个事件,当按下保存时,弹出保存对话框、完成所需要的保存操作
             */

            public void actionPerformed(ActionEvent e) {
                save();
            }
        });
        /*
        为保存为菜单项添加一个事件,当按下保存时,弹出保存对话框、完成所需要的保存操作
         */

        menuItem_ConservtTo.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                save();
            }
        });
        /*
        为打开菜单项添加一个事件,当按下保存时,弹出保存对话框、完成所需要的保存操作
         */
        menuItem_Open.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                if (JFileChooser.APPROVE_OPTION == fileChooser.showOpenDialog(frame)) {
                    File file = fileChooser.getSelectedFile();
                    try {
                        frame.setTitle(file.getName());
                        // File file = new File(path);
                        FileReader fr = new FileReader(file);
                        BufferedReader br = new BufferedReader(fr);
                        while ((str = br.readLine()) != null) {
                            textArea.append(str + "/n");
                        }
                        br.close();
                    } catch (Exception ee) {
                        ee.printStackTrace();
                    }
                } else {//如果无需打开、则退出界面
                }
            }
        });
        //新建子菜单项
        menuItem_Create.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                textArea.setText("");
                labelState.setText("已修改");
            }
        });
        //退出子菜单项
        menuItem_Exit.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                isSaveFile();
            }
        });
        //复制事件
        menuItem_C.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                textArea.copy();
                labelState.setText("已修改");
            }
        });
        //粘贴事件
        menuItem_V.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                textArea.paste();
                labelState.setText("已修改");
            }
        });
        //剪切事件
        menuItem_X.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                textArea.cut();
                labelState.setText("已修改");
            }
        });
        //换行
        menuItem_turnLine.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "已完成自动换行", "自动换行",
                        JOptionPane.INFORMATION_MESSAGE, null);
                textArea.setLineWrap(true);//实现自动换行功能
                textArea.setWrapStyleWord(true);//激活实现断行不断字功能
            }
        });
        //字体
        menuItem_Words.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "请设置字体", "字体设置",
                        JOptionPane.WARNING_MESSAGE, null);
            }
        });
        menuItem_AboutNoteBook.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "详细请进如记事本官网:www.jishiben.com",
                        "关于记事本",
                        JOptionPane.PLAIN_MESSAGE, null);
            }
        });
        menuItem_AboutWindows.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "详细请进如Windows官网:www.wenruanChina.com",
                        "关于主题",
                        JOptionPane.PLAIN_MESSAGE, null);
            }
        });
    }

    public void save() {//保存的方法
        if (JFileChooser.APPROVE_OPTION == fileChooser.showSaveDialog(null)) {
            path = fileChooser.getSelectedFile().getPath();

            try {
                File file = new File(path);
                FileWriter fileWriter = new FileWriter(file);
                fileWriter.write(textArea.getText());
                fileWriter.close();
            } catch (Exception ee) {
                ee.printStackTrace();
            }
        } else {//如果取消保存、则退出界面
            //System.exit(0);
        }
    }
    //判断是否改变

    public boolean isChange() {
        if (labelState.getText().equals("已修改")) {
            return false;
        } else {
            return true;
        }
    }
    //如果文件修改就判断是否保存,弹出询问框

    public void isSaveFile() {
        if (isChange()) {//判断文本去是否改变
            System.exit(0);
        } else {
            int TorF = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存", "保存?",
                    JOptionPane.YES_NO_CANCEL_OPTION,
                    JOptionPane.WARNING_MESSAGE, null);
            switch (TorF) {
                case JOptionPane.YES_OPTION:
                    save();
                    break;
                case JOptionPane.NO_OPTION:
                    System.exit(0);
            }
        }
    }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值