zoukankan      html  css  js  c++  java
  • 寒假生活之程序开发过程二

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

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

       代码如下:

    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();
        }
    }

    程序的基本框架截图:

  • 相关阅读:
    HDU3336 Count the string —— KMP next数组
    CodeForces
    51Nod 1627 瞬间移动 —— 组合数学
    51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈
    51Nod 1225 余数之和 —— 分区枚举
    51Nod 1084 矩阵取数问题 V2 —— 最小费用最大流 or 多线程DP
    51Nod 机器人走方格 V3 —— 卡特兰数、Lucas定理
    51Nod XOR key —— 区间最大异或值 可持久化字典树
    HDU4825 Xor Sum —— Trie树
    51Nod 1515 明辨是非 —— 并查集 + 启发式合并
  • 原文地址:https://www.cnblogs.com/zhaochunhui/p/8503910.html
Copyright © 2011-2022 走看看