寒假生活之程序开发过程二

    后来在第一次的开发的基础上,又进行了为期一周的第二次的发展,让我的程序基本算是完成了

    因为涉及到文件位置还有以下标签,这些并不是很熟悉所以就从网上看了很多的例子,然后自己先学习了一下,然后在进行我这个程序的进一步的加工

   代码如下:

public NotePadTest() {
        setTitle("记事本");
        setSize(500, 460);
        setLocationRelativeTo(null);
        pane.setLayout(new BorderLayout());
        // 设置快捷键
        jme1.setMnemonic('N');
        jme1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
        jme2.setMnemonic('O');
        jme2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
        jme3.setMnemonic('S');
        jme3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
        jme6.setMnemonic('A');
        jme6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
        jme7.setMnemonic('X');
        jme7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));
        jme8.setMnemonic('C');
        jme8.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));
        jme9.setMnemonic('V');
        jme9.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK));
        jme10.setMnemonic('L');
        jme10.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, KeyEvent.CTRL_MASK));
        // 添加菜单项到子菜单(文件)
        jm1.add(jme1);
        jm1.addSeparator();
        jm1.add(jme2);
        jm1.addSeparator();
        jm1.add(jme3);
        jm1.addSeparator();
        jm1.add(jme4);
        jm1.addSeparator();
        jm1.add(jme5);
        jmb.add(jm1);
        // 添加菜单项到子菜单(编辑)
        jm2.add(jme6);
        jm2.addSeparator();
        jm2.add(jme7);
        jm2.addSeparator();
        jm2.add(jme8);
        jm2.addSeparator();
        jm2.add(jme9);
        jm2.addSeparator();
        jm2.add(jme10);
        jmb.add(jm2);
        // 添加菜单项到子菜单(格式)
        // 设置快捷键
        jme11.setMnemonic('w');
        jme11.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.CTRL_MASK));
        jm3.add(jme11);
        jmb.add(jm3);
        // 添加菜单项到子菜单(帮助)
        jm5.add(jme14);
        jm5.addSeparator();
        jm5.add(jme15);
        jmb.add(jm5);
        // 将菜单栏添加到窗体顶部
        setJMenuBar(jmb);
        // container.add(jmb,BorderLayout.NORTH);
        // 添加文本域
        pane.add(jscroll, BorderLayout.CENTER);
        add(pane);
        // **************************添加事件监听器(全选部分)*******************************
        jme6.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jtext.selectAll();// 全选
            }
        });
        // **************************添加事件监听器(剪切部分)*******************************
        jme7.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jtext.cut();// 剪切
            }
        });
        // **************************添加事件监听器(复制部分)*******************************
        jme8.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jtext.copy();// 复制
            }
        });
        // **************************添加事件监听器(粘贴部分)*******************************
        jme9.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                jtext.paste();// 粘贴
            }
        });
        // **************************添加事件监听器(删除部分)*******************************
        jme10.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jtext.replaceSelection(null);// 删除
            }
        });
        // **************************添加事件监听器(新建部分)********************************
        jme1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (jtext.getText().equals("")) {
                    jtext.setText("");
                } else {
                    int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本",
                            JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                    if (result == 0) {
                        save();
                    }
                }
            }
        });
        // **************************添加事件监听器(打开部分)********************************
        jme2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser choose = new JFileChooser();
                choose.setDialogTitle("打开");
                File file;
                int result = choose.showOpenDialog(NotePadTest.this);
                if (result == JFileChooser.APPROVE_OPTION) {
                    try { // 获取当前选择的文件
                            // 创建文件输出流
                        file = choose.getSelectedFile();
                        BufferedReader br = new BufferedReader(new FileReader(file));
                        String str = null;
                        while ((str = br.readLine()) != null) {
                            jtext.append(str + "
");
                        }
                        // 设置记事本标题
                        setTitle(file.getName() + "  记事本");
                        br.close();
                    } catch (Exception ee) {
                        ee.printStackTrace();
                    }
                }
            }
        });
        // **************************添加事件监听器(保存部分)********************************
        jme3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (jtext.getText() != null && !jtext.getText().equals("")) {
                    save();
                }
            }
        });
        // **************************添加事件监听器(另存为部分)********************************
        jme4.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (jtext.getText() != null && !jtext.getText().equals("")) {
                    save();
                }
            }
        });
        // **************************添加事件监听器(退出部分)********************************
        jme5.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (jtext.getText().equals("")) {
                    NotePadTest.this.dispose();
                } else {
                    int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本",
                            JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                    if (result == 0) {
                        if (jtext.getText() != null && !jtext.getText().equals("")) {
                            save();
                        }
                    } else if (result == 1) {
                        NotePadTest.this.dispose();
                    }
                }
            }
        });
        // **************************添加事件监听器(自动换行部分)********************************
        jme11.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (jme11.isSelected()) {
                    jtext.setLineWrap(true);
                } else {
                    jtext.setLineWrap(false);
                }
            }
        });
        // **************************添加事件监听器(查看帮助部分)***********************************
        jme14.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                JOptionPane.showMessageDialog(NotePadTest.this, "输入文字即可!");
            }
        });
        // **************************添加事件监听器(关于记事本部分)***********************************
        jme15.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                JOptionPane.showMessageDialog(NotePadTest.this, "版本:Windows旗舰版");
            }
        });

        // 设置窗体关闭
        if (jtext.getText().equals("")) {
            setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        } else if (jtext.getText() != null) {
            int result = JOptionPane.showConfirmDialog(NotePadTest.this, "是否将更改保存到无标题?", "记事本",
                    JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
            if (result == 0) {
            } else if (result == 1) {
                setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            }
        }
        // 设置窗体是否可见
        setVisible(true);
    }

    public void save() {
        JFileChooser choose = new JFileChooser();
        int result = choose.showSaveDialog(NotePadTest.this);// NotePad.this父容器
        if (result == JFileChooser.APPROVE_OPTION) {
            File file;
            try {
                file = choose.getSelectedFile();
                BufferedWriter bw = new BufferedWriter(new FileWriter(file));
                bw.write(jtext.getText());
                bw.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        }

    }

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

程序的基本框架截图:

原文地址:https://www.cnblogs.com/zhaochunhui/p/8503910.html