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


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

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

       代码如下:

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

    程序的基本框架截图:

  • 相关阅读:
    成熟到优秀的瓶颈问题
    今天我们为什么不成功
    将HTML标签变为小写
    2010世界杯 排阵型 猜比分
    又一款 jQuery 头图切换形式
    整理下工作环境的相应资源
    prototype 的ajax
    即时点选的菜单
    如何禁止一个输入框输入
    基于jQuery的仿FLASH 菜单
  • 原文地址:https://www.cnblogs.com/zhaochunhui/p/8503910.html
Copyright © 2020-2023  润新知