亚特兰蒂pro+ 2021-06-24 09:54 采纳率: 0%
浏览 50
已结题

求写JAVA程序并做分析

用Java实现一个简单记事本的功能,菜单要求齐全,但不必全部实现功能。需要实现的主要是“文件”菜单中的“新建”,“打开”,“保存”和“退出”功能即可。快捷键的功能可以忽略。(写出代码并做六百字左右解释分析,并不需要太专业的讲解,最好今天能做出来)

 

  • 写回答

4条回答 默认 最新

  • 小P聊技术 2021-06-24 09:55
    关注

    java 记事本及其简单功能的实现其中包括保存、新建、等功能的实现。

    import java.awt.*;  
    import java.awt.event.*;  
    import java.text.*;  
    import java.util.*;  
    import java.io.*;  
    import javax.swing.undo.*;
    
    import javafx.scene.input.InputEvent;
    import javafx.scene.input.KeyEvent;
    
    import javax.swing.border.*;  
    import javax.swing.*;  
    import javax.swing.text.*;  
    import javax.swing.event.*;  
    import java.awt.datatransfer.*;
    import java.time.*;   
    public class Mynote extends JFrame implements ActionListener,DocumentListener{
        JMenuBar bar;
        JMenu cai1,cai2,cai3,cai4,cai5,cai41;
        JMenuItem cai11,cai12,cai13,cai14,cai15,cai16,cai17,cai18,cai21,cai22,cai23,cai24,cai25,cai26,cai27,cai28,cai29,cai210,cai211,cai212,cai213,cai32,cai33,cai34,cai42,cai41_1,cai41_2,cai41_3,cai51,cai52,cai53,editMenu_Undo;
        JTextArea text;
        JPanel pa;
        JScrollPane jsc;
        FileReader fr;
        BufferedReader br;
        FileWriter fw,fw1;
        BufferedWriter bw,bw1,out;
        String str=null,oldValue;
        File dir,currentFile,bcwjm;//currentFile当前文件名
        JFileChooser jfc2;
        JLabel label;
        JCheckBoxMenuItem cai31;
        //右键菜单项
        JPopupMenu youcd;
        JMenuItem cx,jq,fz,zt,sc,qx;
        //系统剪切板
        Toolkit toolkit=Toolkit.getDefaultToolkit();  
        Clipboard clipBoard=toolkit.getSystemClipboard();
        //设置图标
        ImageIcon image;
        //撤销操作
        protected UndoManager undo=new UndoManager();
        protected UndoableEditListener undoHandler=new UndoHandler();
        //判断是否是新文件
        boolean isNewFile=true;
        int a=0,b=0;
        public Mynote() {
            initGUI();
            this.setBounds(500,300,600,400);
            this.setVisible(true);
            setDefaultCloseOperation(3);
            this.setTitle("霖霖的记事本");
            //改字体
            Font ft = new Font("华文楷体",Font.PLAIN,14);
            java.util.Enumeration keys = UIManager.getDefaults().keys();  
            while (keys.hasMoreElements()) {  
                Object key = keys.nextElement();  
                Object value = UIManager.get(key);  
                if (value instanceof javax.swing.plaf.FontUIResource) {  
                    UIManager.put(key, ft);  
                }  
            }
            //撤销
            label = new JLabel("按F1查看帮助");
            this.add(label,BorderLayout.SOUTH);
            //添加左上角图片
            image = new ImageIcon("my.jfif");
            this.setIconImage(image.getImage());
            //添加窗口侦听器
            addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    exitWindowChoose();
                }
            });
                    
            checkMenuItemEnabled();
            text.requestFocus();
        }
        public void initGUI(){
            bar = new JMenuBar();
            cai1 = new JMenu("文件(F)");
            cai1.setMnemonic('F');//设置快捷键ALT+F
            cai2 = new JMenu("编辑(N)");
            cai2.setMnemonic('N');
            cai3 = new JMenu("格式(O)");
            cai3.setMnemonic('O');
            cai4 = new JMenu("查看(V)");
            cai4.setMnemonic('V');
            cai5 = new JMenu("帮助(H)");
            cai5.setMnemonic('H');
    
            cai11 = new JMenuItem("新建(N)");
            cai11.setAccelerator(KeyStroke.getKeyStroke(78,2));
            cai11.addActionListener(this);
            cai12 = new JMenuItem("新窗口(W)");
            cai12.addActionListener(this);
            cai13 = new JMenuItem("打开(O)");
            cai13.setAccelerator(KeyStroke.getKeyStroke(79,2));
            cai13.addActionListener(this);
            cai14 = new JMenuItem("保存(S)");
            cai14.setAccelerator(KeyStroke.getKeyStroke(83,2));
            cai14.addActionListener(this);
            cai15 = new JMenuItem("另存为(A)");
            cai15.addActionListener(this);
            cai16 = new JMenuItem("页面设置(U)");
            cai16.addActionListener(this);
            cai17 = new JMenuItem("打印(P)");
            cai17.addActionListener(this);
            cai18 = new JMenuItem("退出(X)");
            cai18.addActionListener(this);
    
            cai21 = new JMenuItem("撤销(U)");
            cai21.setAccelerator(KeyStroke.getKeyStroke(90,2));
            cai21.addActionListener(this);
            cai21.setEnabled(false);
            cai22 = new JMenuItem("剪切(T)");
            cai22.setAccelerator(KeyStroke.getKeyStroke(88,2));
            cai22.addActionListener(this);
            cai23 = new JMenuItem("复制(C)");
            cai23.setAccelerator(KeyStroke.getKeyStroke(67,2));
            cai23.addActionListener(this);
            cai24 = new JMenuItem("粘贴(P)");
            cai24.setAccelerator(KeyStroke.getKeyStroke(86,2));
            cai24.addActionListener(this);
            cai25 = new JMenuItem("删除(L)");
            cai25.setAccelerator(KeyStroke.getKeyStroke(127,0));
            cai25.addActionListener(this);
            cai26 = new JMenuItem("使用 Bing 搜索...");
            cai26.addActionListener(this);
            cai27 = new JMenuItem("查找(F)");
            cai27.addActionListener(this);
            cai28 = new JMenuItem("查找上一个(N)");
            cai28.addActionListener(this);
            cai29 = new JMenuItem("查找下一个(V)");
            cai29.addActionListener(this);
            cai210 = new JMenuItem("替换(R)...");
            cai210.addActionListener(this);
            cai211 = new JMenuItem("(转到G)...");
            cai211.addActionListener(this);
            cai212 = new JMenuItem("全选(A)");
            cai212.setAccelerator(KeyStroke.getKeyStroke(65, 2));
            cai212.addActionListener(this);
            cai213 = new JMenuItem("时间/日期(D)");
            cai213.setAccelerator(KeyStroke.getKeyStroke(116,0));
            cai213.addActionListener(this);
    
            cai31 = new JCheckBoxMenuItem("自动换行(W)");
            cai31.setMnemonic('W');
            cai31.setState(true);
            cai31.addActionListener(this);
            cai32 = new JMenuItem("字体(F)");
            cai32.addActionListener(this);
            cai33 = new JMenuItem("前景色");
            cai33.addActionListener(this);
            cai34 = new JMenuItem("背景色");
            cai34.addActionListener(this);
    
            cai41 = new JMenu("缩放(Z)");
            cai41.addActionListener(this);
            cai42 = new JMenuItem("状态栏(S)");
            cai42.addActionListener(this);
            cai41_1 = new JMenuItem("放大(I)");
            cai41_1.addActionListener(this);
            cai41_2 = new JMenuItem("缩小(O)");
            cai41_2.addActionListener(this);
            cai41_3 = new JMenuItem("恢复默认缩放(O)");
            cai41_3.addActionListener(this);
    
            cai51 = new JMenuItem("查看帮助(H)");
            cai51.setAccelerator(KeyStroke.getKeyStroke(112,0));
            cai51.addActionListener(this);
            cai52 = new JMenuItem("发送反馈(F)");
            cai52.addActionListener(this);
            cai53 = new JMenuItem("关于记事本(A)");
            cai53.addActionListener(this);
    
            cai1.add(cai11);
            cai1.add(cai12);
            cai1.add(cai13);
            cai1.add(cai14);
            cai1.add(cai15);
            cai1.add(cai16);
            cai1.add(cai17);
            cai1.add(cai18);
    
            cai2.add(cai21);
            cai2.add(cai22);
            cai2.add(cai23);
            cai2.add(cai24);
            cai2.add(cai25);
            cai2.add(cai26);
            cai2.add(cai27);
            cai2.add(cai28);
            cai2.add(cai29);
            cai2.add(cai210);
            cai2.add(cai211);
            cai2.add(cai212);
            cai2.add(cai213);
    
            cai3.add(cai31);
            cai3.add(cai32);
            cai3.add(cai33);
            cai3.add(cai34);
    
            
            cai41.add(cai41_1);
            cai41.add(cai41_2);
            cai41.add(cai41_3);
            cai4.add(cai41);
            cai4.add(cai42);
    
            cai5.add(cai51);
            cai5.add(cai52);
            cai5.add(cai53);
            bar.add(cai1);
            bar.add(cai2);
            bar.add(cai3);
            bar.add(cai4);
            bar.add(cai5);
            this.setJMenuBar(bar);
    
            text = new JTextArea(16,19);
            Font font = new Font("微软雅黑",Font.BOLD,20);
            text.setFont(font);
            text.setEnabled(true);
    
            //编辑区注册事件监听(与撤销操作有关)  
            text.getDocument().addUndoableEditListener(undoHandler);  
            text.getDocument().addDocumentListener(this);
            //创建右键菜单
            youcd = new JPopupMenu();  
            cx = new JMenuItem("撤销(U)");  
            jq = new JMenuItem("剪切(T)");  
            fz = new JMenuItem("复制(C)");  
            zt = new JMenuItem("粘帖(P)");  
            sc = new JMenuItem("删除(D)");  
            qx = new JMenuItem("全选(A)");
            
            cx.setEnabled(false);
    
            youcd.add(cx);  
            youcd.addSeparator();  
            youcd.add(jq);  
            youcd.add(fz);  
            youcd.add(zt);  
            youcd.add(sc);  
            youcd.addSeparator();  
            youcd.add(qx);
    
            cx.addActionListener(this);  
            jq.addActionListener(this);  
            fz.addActionListener(this);  
            zt.addActionListener(this);  
            sc.addActionListener(this);  
            qx.addActionListener(this);
            //创建编辑菜单及菜单项并注册事件监听 
            text.addMouseListener(new MouseAdapter()  
            {   public void mousePressed(MouseEvent e)  
                {   if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件  
                    {   youcd.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单  
                    }  
                    checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性  
                    text.requestFocus();//编辑区获取焦点  
                }  
                public void mouseReleased(MouseEvent e)  
                {   if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件  
                    {   youcd.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单  
                    }  
                    checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性  
                    text.requestFocus();//编辑区获取焦点  
                }  
            });
            pa = new JPanel();
            BorderLayout grid = new BorderLayout();
            pa.setLayout(grid);
            //设置光标可用性为true
            text.getCaret().setVisible(true);
            //设置光标位置为文本最后面
            text.setCaretPosition(text.getText().length()); 
            if(text.getText().equals("输入用户名")){
                text.setText("");
            }
            else//全选文本框
                text.selectAll();
            pa.add(text);
            //JScorllPane添加滚动条
            jsc = new JScrollPane(text);
            pa.add(jsc);
            //获取原文内容方便比较
            oldValue=text.getText();
            this.add(pa);
            cai2.addMenuListener(new MenuListener(){
                public void menuCanceled(MenuEvent e)//取消菜单时调用  
                {   checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性  
                }  
                public void menuDeselected(MenuEvent e)//取消选择某个菜单时调用  
                {   checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性  
                }  
                public void menuSelected(MenuEvent e)//选择某个菜单时调用  
                {   checkMenuItemEnabled();//设置剪切、复制、粘贴、删除等功能的可用性  
                }  
            });
        }
        //设置复制、粘贴等功能的可用性
        public void checkMenuItemEnabled()  
        {   String selectText=text.getSelectedText();  
            if(selectText==null)  
            {   cai22.setEnabled(false);   
                cai23.setEnabled(false); 
                cai25.setEnabled(false); 
                fz.setEnabled(false);
                zt.setEnabled(false);
                jq.setEnabled(false);
            }  
            else  
            {   cai22.setEnabled(true);
                cai23.setEnabled(true);    
                cai25.setEnabled(true);
                fz.setEnabled(true);
                zt.setEnabled(true);
                jq.setEnabled(true);   
            }  
            //粘帖功能可用性判断  
            Transferable contents=clipBoard.getContents(this);  
            if(contents==null){
                cai24.setEnabled(false);
                zt.setEnabled(false);
            }   
            else  
            {   cai24.setEnabled(true);
                zt.setEnabled(true);
            }  
        }
        public void font()  
        {   final JDialog fontDialog=new JDialog(this,"字体设置",false);  
            Container con=fontDialog.getContentPane();  
            con.setLayout(new FlowLayout(FlowLayout.LEFT));  
            JLabel fontLabel=new JLabel("字体(F):");  
            fontLabel.setPreferredSize(new Dimension(100,20));//构造一个Dimension,并将其初始化为指定宽度和高度  
            JLabel styleLabel=new JLabel("字形(Y):");  
            styleLabel.setPreferredSize(new Dimension(100,20));  
            JLabel sizeLabel=new JLabel("大小(S):");  
            sizeLabel.setPreferredSize(new Dimension(100,20));  
            final JLabel sample=new JLabel("张选仲的记事本-ZXZ's Notepad");  
            //sample.setHorizontalAlignment(SwingConstants.CENTER);  
            final JTextField fontText=new JTextField(9);  
            fontText.setPreferredSize(new Dimension(200,20));  
            final JTextField styleText=new JTextField(8);  
            styleText.setPreferredSize(new Dimension(200,20));  
            final int style[]={Font.PLAIN,Font.BOLD,Font.ITALIC,Font.BOLD+Font.ITALIC};  
            final JTextField sizeText=new JTextField(5);  
            sizeText.setPreferredSize(new Dimension(200,20));  
            JButton okButton=new JButton("确定");  
            JButton cancel=new JButton("取消");  
            cancel.addActionListener(new ActionListener()  
            {   public void actionPerformed(ActionEvent e)  
                {   fontDialog.dispose();     
                }  
            });  
            Font currentFont=text.getFont();  
            fontText.setText(currentFont.getFontName());  
            fontText.selectAll();  
            //styleText.setText(currentFont.getStyle());  
            //styleText.selectAll();  
            if(currentFont.getStyle()==Font.PLAIN)  
                styleText.setText("常规");  
            else if(currentFont.getStyle()==Font.BOLD)  
                styleText.setText("粗体");  
            else if(currentFont.getStyle()==Font.ITALIC)  
                styleText.setText("斜体");  
            else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC))  
                styleText.setText("粗斜体");  
            styleText.selectAll();  
            String str=String.valueOf(currentFont.getSize());  
            sizeText.setText(str);  
            sizeText.selectAll();  
            final JList fontList,styleList,sizeList;  
            GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();  
            final String fontName[]=ge.getAvailableFontFamilyNames();  
            fontList=new JList(fontName);  
            fontList.setFixedCellWidth(86);  
            fontList.setFixedCellHeight(20);  
            fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  
            final String fontStyle[]={"常规","粗体","斜体","粗斜体"};  
            styleList=new JList(fontStyle);  
            styleList.setFixedCellWidth(86);  
            styleList.setFixedCellHeight(20);  
            styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  
            if(currentFont.getStyle()==Font.PLAIN)  
                styleList.setSelectedIndex(0);  
            else if(currentFont.getStyle()==Font.BOLD)  
                styleList.setSelectedIndex(1);  
            else if(currentFont.getStyle()==Font.ITALIC)  
                styleList.setSelectedIndex(2);  
            else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC))  
                styleList.setSelectedIndex(3);  
            final String fontSize[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};  
            sizeList=new JList(fontSize);  
            sizeList.setFixedCellWidth(43);  
            sizeList.setFixedCellHeight(20);  
            sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);  
            fontList.addListSelectionListener(new ListSelectionListener()  
            {   public void valueChanged(ListSelectionEvent event)  
                {   fontText.setText(fontName[fontList.getSelectedIndex()]);  
                    fontText.selectAll();  
                    Font sampleFont1=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));  
                    sample.setFont(sampleFont1);  
                }  
            });  
            styleList.addListSelectionListener(new ListSelectionListener()  
            {   public void valueChanged(ListSelectionEvent event)  
                {   int s=style[styleList.getSelectedIndex()];  
                    styleText.setText(fontStyle[s]);  
                    styleText.selectAll();  
                    Font sampleFont2=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));  
                    sample.setFont(sampleFont2);  
                }  
            });  
            sizeList.addListSelectionListener(new ListSelectionListener()  
            {   public void valueChanged(ListSelectionEvent event)  
                {   sizeText.setText(fontSize[sizeList.getSelectedIndex()]);  
                    //sizeText.requestFocus();  
                    sizeText.selectAll();     
                    Font sampleFont3=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));  
                    sample.setFont(sampleFont3);  
                }  
            });  
            okButton.addActionListener(new ActionListener()  
            {   public void actionPerformed(ActionEvent e)  
                {   Font okFont=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));  
                    text.setFont(okFont);  
                    fontDialog.dispose();  
                }  
            });  
            JPanel samplePanel=new JPanel();  
            samplePanel.setBorder(BorderFactory.createTitledBorder("示例"));  
            //samplePanel.setLayout(new FlowLayout(FlowLayout.CENTER));  
            samplePanel.add(sample);  
            JPanel panel1=new JPanel();  
            JPanel panel2=new JPanel();  
            JPanel panel3=new JPanel();  
    
            panel2.add(fontText);  
            panel2.add(styleText);  
            panel2.add(sizeText);  
            panel2.add(okButton);  
            panel3.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图  
            panel3.add(new JScrollPane(styleList));  
            panel3.add(new JScrollPane(sizeList));  
            panel3.add(cancel);  
            con.add(panel1);  
            con.add(panel2);  
            con.add(panel3);  
            con.add(samplePanel);  
            fontDialog.setSize(350,340);  
            fontDialog.setLocation(200,200);  
            fontDialog.setResizable(false);  
            fontDialog.setVisible(true);  
        }
        public void exitWindowChoose()//关闭窗口时判断方法  
        {   text.requestFocus();  
            String str1=text.getText();  
            if(str1.equals(oldValue)==true)  
            {   System.exit(0);  
            }  
            else  
            {   int exitChoose=JOptionPane.showConfirmDialog(this,"您的文件尚未保存,是否保存?","退出提示",JOptionPane.YES_NO_CANCEL_OPTION);  
                if(exitChoose==JOptionPane.YES_OPTION)  
                {   //boolean isSave=false;  
                    if(isNewFile)  
                    {     
                        String str=null;  
                        JFileChooser fileChooser=new JFileChooser();  
                        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);  
                        fileChooser.setApproveButtonText("确定");  
                        fileChooser.setDialogTitle("另存为");  
                        
                        int result=fileChooser.showSaveDialog(this);  
                        
                        if(result==JFileChooser.CANCEL_OPTION)  
                        {   label.setText(" 您没有保存文件");  
                            return;  
                        }                       
                        File saveFileName=fileChooser.getSelectedFile();  
    
                        if(saveFileName==null||saveFileName.getName().equals(""))  
                        {   JOptionPane.showMessageDialog(this,"不合法的文件名","不合法的文件名",JOptionPane.ERROR_MESSAGE);  
                        }  
                        else   
                        {   try  
                            {   FileWriter fw3=new FileWriter(saveFileName);  
                                BufferedWriter bw3=new BufferedWriter(fw3);  
                                bw3.write(text.getText(),0,text.getText().length());  
                                bw3.flush();  
                                fw3.close();  
                                
                                isNewFile=false;  
                                currentFile=saveFileName;  
                                oldValue=text.getText();  
                                
                                this.setTitle(saveFileName.getName()+"  - 记事本");  
                                label.setText(" 当前打开文件:"+saveFileName.getAbsoluteFile());  
                                //isSave=true;  
                            }                             
                            catch(IOException ioException){                   
                            }                 
                        }  
                    }  
                    else  
                    {  
                        try  
                        {   FileWriter fw4=new FileWriter(currentFile);  
                            BufferedWriter bw4=new BufferedWriter(fw4);  
                            bw4.write(text.getText(),0,text.getText().length());  
                            bw4.flush();  
                            fw4.close();  
                            //isSave=true;  
                        }                             
                        catch(IOException ioException){                   
                        }  
                    }  
                    System.exit(0);  
                    //if(isSave)System.exit(0);  
                    //else return;  
                }  
                else if(exitChoose==JOptionPane.NO_OPTION)  
                {   System.exit(0);  
                }  
                else  
                {   return;  
                }  
            }
        }
        public void save(){//保存方法
            jfc2 = new JFileChooser();
            jfc2.setDialogTitle("另存为...");
            int state=jfc2.showSaveDialog(this);
            bcwjm=jfc2.getSelectedFile();//获取第一次保存文件夹的路径及原名
            if(state==JFileChooser.APPROVE_OPTION){
            try{
                dir=jfc2.getCurrentDirectory();
                str=jfc2.getSelectedFile().getName();
                File file = new File(dir,str);
                fw = new FileWriter(file);
                bw = new BufferedWriter(fw);
                bw.write(text.getText());
                bw.close();
                fw.close();
            }
            catch(IOException exp){}
            }
        }
        public void actionPerformed(ActionEvent e){
            String str=e.getActionCommand();
            if(str.equals("新建(N)")){
                
                text.requestFocus();//获取焦点
                String str1 = text.getText();
                boolean textIsChange = (str1.equals(oldValue))?false:true;//判断是否改变文件
                if(textIsChange){
                    int saveChoose = JOptionPane.showConfirmDialog(this,"你的文件未保存","提示",JOptionPane.YES_NO_CANCEL_OPTION);
                    if(saveChoose==JOptionPane.YES_OPTION){
                        String st=null;
                        JFileChooser file = new JFileChooser();
                        file.setFileSelectionMode(JFileChooser.FILES_ONLY);
                        file.setDialogTitle("另存为");
                        int result=file.showSaveDialog(this);  
                    if(result==JFileChooser.CANCEL_OPTION){
                        label.setText("你没有选择文件");
                        return;
                    }
                    //获取保存文件名  
                    File saveFileName=file.getSelectedFile();  
                    if(saveFileName==null || saveFileName.getName().equals(""))  
                    {   JOptionPane.showMessageDialog(this,"不合法文件名","不合法文件名",JOptionPane.ERROR_MESSAGE);  
                    }  
                        else{
                            try  
                            {   FileWriter fw2=new FileWriter(saveFileName);  
                                BufferedWriter bw2=new BufferedWriter(fw2);  
                                bw2.write(text.getText(),0,text.getText().length());  
                                bw2.flush();//刷新该流的缓冲  
                                bw2.close();  
                                isNewFile=false;  
                                currentFile=saveFileName;  
                                oldValue=text.getText();  
                                this.setTitle(saveFileName.getName()+" - 记事本");  
                                label.setText("当前打开文件:"+saveFileName.getAbsoluteFile());  
                            }  
                            catch (IOException ioException)  
                            {  
                            }  
                        }  
                    }  
                    else if(saveChoose==JOptionPane.NO_OPTION)  
                    {   text.replaceRange("",0,text.getText().length());  
                        label.setText("新建文件");
                        this.setTitle("无标题——记事本");  
                        isNewFile=true;  
                        undo.discardAllEdits(); //撤销所有已“撤销”的操作  
                        cai21.setEnabled(false);  
                        oldValue=text.getText();  
                    }  
                    else if(saveChoose==JOptionPane.CANCEL_OPTION){
                        return;  
                    }  
                }  
                else  
                {   text.replaceRange("",0,text.getText().length());  
                    label.setText(" 新建文件");  
                    this.setTitle("无标题——记事本");  
                    isNewFile=true;  
                    undo.discardAllEdits();//撤销所有已“撤销”的操作  
                    cai21.setEnabled(false);  
                    oldValue=text.getText();  
                } 
            }
            else if(str.equals("新窗口(W)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("打开(O)")){
                this.setVisible(true);
                JFileChooser jfc1=new JFileChooser();
                jfc1.setDialogTitle("打开文件...");
    			//默认方式
    			jfc1.showOpenDialog(null);
    			//显示
    			jfc1.setVisible(true);
                
                //得到文件路径
    			String filename=jfc1.getSelectedFile().getAbsolutePath();
                try{
                    fr=new FileReader(filename);
    				br=new BufferedReader(fr);
    				//从文件中循环读取,并显示到text中
    				String s="";
    				String sus="";
    				while((s=br.readLine())!=null)
    				{
    					//显示到text中
    					sus+=s+"\r\n";
                    }
                    text.setText(sus);
                }
            catch(Exception e1){
                e1.printStackTrace();
            }
            finally 
    			{
    				try {
    					fr.close();
    					br.close();
    				} catch (Exception e2) {
    					e2.printStackTrace();
    				}
    				
    			}
    			
            }
            else if(str.equals("保存(S)")){
               /* //设置弹出对话框
    			JFileChooser jfc2=new JFileChooser();
    			jfc2.setDialogTitle("另存为...");
    			//默认显示方式
    			jfc2.showSaveDialog(null);
    			jfc2.setVisible(true);
    			
    			//获取文件保存路径
    			String filename2=jfc2.getSelectedFile().getAbsolutePath();
    			//写人
    			fw=null;
    			bw=null;
    			
    			try {
    				fw=new FileWriter(filename2);
    				bw=new BufferedWriter(fw);
    				bw.write(this.text.getText());
    				
    			} catch (Exception e3) {
    
    				e3.printStackTrace();
    			}
    			finally
    			{
    				try {
                        bw.close();
                        fw.close();
                    } catch (Exception e4) {
    					e4.printStackTrace();
                    }
                }
            }*/
            if(a==0&&b==0){
                save();
                a=1;
            }
            if(a==1&&b==1){
                try{
                    //File file = new File(dir,str);
                    fw1 = new FileWriter(bcwjm);
                    bw1 = new BufferedWriter(fw1);
                    bw1.write(text.getText());
                    bw1.close();
                    fw1.close();
                    currentFile=bcwjm;
                    oldValue=text.getText();
                    this.setTitle(bcwjm.getName()+"记事本");
                    label.setText("当前打开文件:"+bcwjm.getAbsoluteFile());
                }
                catch(IOException exp){}
            }
            b=1;
        }
            else if(str.equals("另存为(A)")){
                save();
            }
            else if(str.equals("页面设置(U)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚且无此功能");
            }
            else if(str.equals("打印(P)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("退出(X)")){
                System.exit(0);
                
            }
            else if(str.equals("撤销(U)")){
                text.requestFocus();
                if(undo.canUndo())  
                {   try  
                    {   undo.undo();  
                    }  
                    catch (CannotUndoException ex)  
                    {   System.out.println("Unable to undo:" + ex);  
                        //ex.printStackTrace();  
                    }  
                }  
                if(!undo.canUndo())  
                    {   editMenu_Undo.setEnabled(false);  
                    }
            }
            else if(str.equals("剪切(T)")){
                text.cut();
            }
            else if(str.equals("复制(C)")){
                /*text.requestFocus();
                String str3=text.getSelectedText();  
                StringSelection selection=new StringSelection(str3);  
                clipBoard.setContents(selection,null);*/
                text.copy();
            }
            else if(str.equals("粘贴(P)")){
                text.paste();
            }
            else if(str.equals("删除(L)")){
                text.replaceSelection(null);
            }
            else if(str.equals("使用 Bing 搜索...")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }else if(str.equals("查找(F)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("查找上一个(N)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("查找下一个(V)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("替换(R)...")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("转到(G)...")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("全选(A)")){
                text.selectAll();
            }
            else if(str.equals("时间/日期(D)")){
                LocalDateTime date = LocalDateTime.now();
                text.setText(date.toString());
            }else if(str.equals("自动换行(W)")){
                if(cai31.getState())
                    text.setLineWrap(true);
                else
                    text.setLineWrap(false);
            }
            else if(str.equals("字体(F)")){
                text.requestFocus();
                font();
            }
            else if(str.equals("前景色")){
                Color newColor1 = JColorChooser.showDialog(this,"选择你所喜欢的前景颜色",text.getForeground());
                if(newColor1!=null){
                    text.setForeground(newColor1);
                }
            }
            else if(str.equals("背景色")){       
                Color newColor = JColorChooser.showDialog(this,"选择你所喜欢的背景颜色",text.getBackground());
                if(newColor!=null){
                    text.setBackground(newColor);
                }
            }
            else if(str.equals("缩放(Z)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("状态栏(S)")){
    
            }
            else if(str.equals("放大(I)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("缩小(O)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("恢复默认缩放")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,"尚无此功能");
            }
            else if(str.equals("查看帮助(H)")){
            try { 
                String url = "https://i.csdn.net/#/uc/profile"; 
                java.net.URI uri = java.net.URI.create(url); 
                java.awt.Desktop dp = java.awt.Desktop.getDesktop(); 
                if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) { 
                    dp.browse(uri);
                }
                } catch (java.lang.NullPointerException e5) { 
                    e5.printStackTrace(); 
                } catch (java.io.IOException e5) { 
                e5.printStackTrace(); 
                } 
                }
            else if(str.equals("关于反馈(F)")){
                
            }
            else if(str.equals("关于记事本(A)")){
                text.requestFocus();
                JOptionPane.showMessageDialog(this,
                "///—————————————————————《欢迎使用霖霖记事本》————————————————————///\n"+
                "——————————————————————————————————————————————————————\n"+
                "创作人:鲜霖\n"+
                "e-mail:linxian479@gmail.com\n"+
                "———1589861957@qq.com\n"+
                "创作时间:2020年6月20日\n"+
                "vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\n",
                "记事本",JOptionPane.INFORMATION_MESSAGE);
            }
    }
        public void removeUpdate(DocumentEvent e)  
        {   cai21.setEnabled(true);  
        }  
        public void insertUpdate(DocumentEvent e)  
        {   cai21.setEnabled(true);  
        }  
        public void changedUpdate(DocumentEvent e)  
        {   cai21.setEnabled(true);  
        }//DocumentListener结束  
    
        class UndoHandler implements UndoableEditListener  
        {   public void undoableEditHappened(UndoableEditEvent uee)  
            {   undo.addEdit(uee.getEdit());  
            }  
        } 
    }
    
    评论

报告相同问题?