• Java实现记事本|IO流/GUI

    Java实现记事本

    题目

    利用GUI实现一个简单的记事本(notepad),即打开文件,文字内容显示在界面上;
    允许对文字内容进行编辑,并可以保存到文件。

    代码

    class notPadcontainer{
        
        public Boolean visible = false;
        //组件定义成属性
        public JFrame notPadFrame;
        public JMenuBar notPadMenuBar;
        public JMenu firMenu;
        public JMenu secMenu;
        public JMenu thirMenu;
        public JMenu fourMenu;
        
        public JMenuItem buildItem;
        public JMenuItem openItem;
        public JMenuItem reserveItem;
        public JMenuItem paperSetItem;
        public JMenuItem clearItem;
        public JMenuItem aboutItem;
        public JMenuItem fontItem20;
        public JMenuItem fontItem40;
        public JTextArea textArea;
        public JScrollPane textScrollPane;
        
         /*
          * 无参构造函数 
          * 创建组件 初始化组件
         */
        notPadcontainer(){
            //窗体Frame
            this.notPadFrame = new JFrame("notePad by fishers"); //设置窗体 名字为notePad
            this.notPadFrame.setLayout(new BorderLayout()); //边界布局方式
            this.notPadFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭框
            this.notPadFrame.setSize(500,500); //设置窗口大小
    
            //菜单组件
            this.notPadMenuBar = new JMenuBar();
            this.firMenu = new JMenu("文件");
            this.thirMenu = new JMenu("字体");
            this.secMenu = new JMenu("编辑");
            this.fourMenu = new JMenu("帮助");
            
            
            //create JMenuItem for the First menu
            this.buildItem = new JMenuItem("新建");
            this.openItem = new JMenuItem("打开");
            this.reserveItem = new JMenuItem("保存");
            this.paperSetItem = new JMenuItem("页面设置");
            
            //create JMenuItem for the sec thir four menu
            this.clearItem = new JMenuItem("清空");
            this.aboutItem = new JMenuItem("关于");
            this.fontItem20 = new JMenuItem("字体20号");
            this.fontItem40 = new JMenuItem("字体40号");
            //文本组件
            this.textArea = new JTextArea();
            this.textScrollPane = new JScrollPane(textArea);
            textArea.setFont(new Font("宋体",Font.PLAIN,20)); //默认20号字体
            ItemAdd();
            runListener();
        }
        
        //添加组件
        public void ItemAdd(){
            
            //添加JMenu到JMenuBar
            notPadMenuBar.add(firMenu);
            notPadMenuBar.add(secMenu);
            notPadMenuBar.add(thirMenu);
            notPadMenuBar.add(fourMenu);
            
            //添加JMenuItem到第一个菜单
            firMenu.add(buildItem);
            firMenu.add(openItem);
            firMenu.add(reserveItem);
            firMenu.add(paperSetItem);
            secMenu.add(clearItem);
            thirMenu.add(fontItem20);
            thirMenu.add(fontItem40);
            fourMenu.add(aboutItem);
            
            //notPadFrame中添加各个组件
            this.notPadFrame.setJMenuBar(notPadMenuBar);
            this.notPadFrame.add(textScrollPane,BorderLayout.CENTER);
        }
    
        
        
        /*
         * 事件监听代码部分
        */
        public void runListener() {
            //新建文件 = 清空。。
            buildItem.addActionListener( e -> {
                textArea.setText("");
            });     
            
            //打开文件
            openItem.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    //设置弹出框 FileDialog
                    FileDialog saveFiledialog = new FileDialog(notPadFrame,"打开文件",FileDialog.LOAD);
                    saveFiledialog.setVisible(true);
                    String fileDir = saveFiledialog.getDirectory(); //拿到目录
                    String fileName = saveFiledialog.getFile(); //拿到文件名
    //              System.out.println(fileDir);
    //              System.out.println(fileName);
                    File openFile = new File(fileDir,fileName); //使用File类创建新文件对象
                    try {
                        FileReader freader = new FileReader(openFile); //字符流
                        StringBuffer tempBuffer  = new StringBuffer();//StringBuffer可变
                        int len = 0; //下面使用read方法读取
                        while((len = freader.read()) != -1) {
                            tempBuffer.append((char)len); //append方法加入StringBuffer
                        }
                        String openString = new String(tempBuffer.toString());
                        textArea.setText(openString);
                        freader.close();//关闭流
                    } catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            });
            
            //保存文件
            reserveItem.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub 
                    FileDialog saveFiledialog = new FileDialog(notPadFrame,"保存文件",FileDialog.SAVE);//父级frame 标题 mode
                    saveFiledialog.setVisible(true);
                    String fileDir = saveFiledialog.getDirectory();
                    String fileName = saveFiledialog.getFile();
                    System.out.println(fileDir);
                    System.out.println(fileName);
                    String ContentString = textArea.getText();
                    File saveFile = new File(fileDir,fileName);
                    try {
                        FileWriter fWriter = new FileWriter(saveFile); //使用字符流写文件
                        fWriter.write(ContentString); //写文件
                        fWriter.close(); //关闭流
                    }catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            });
            
            //清空文件
            clearItem.addActionListener( e -> {
                textArea.setText("");
            });
    
            //监听关于
            aboutItem.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    // TODO Auto-generated method stub
                    JFrame aboutFrame = new JFrame("关于"); //新建窗口
                    aboutFrame.setLayout(new BorderLayout());
                    aboutFrame.setSize(300,115);
                    aboutFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);//设置隐藏窗口
                    
                    
                    JPanel panel  = new JPanel();
                    JLabel label = new JLabel("不会换行、中文乱码的记事本");
                    JPanel panel2  = new JPanel();
                    JLabel label2 = new JLabel("Copyright ? 2019 fishers");
                    panel.add(label);
                    panel2.add(label2);
                    aboutFrame.add(panel,BorderLayout.CENTER);
                    aboutFrame.add(panel2,BorderLayout.PAGE_START);
                    aboutFrame.setVisible(true);
                }
            });
            
            fontItem20.addActionListener(e->{
                textArea.setFont(new Font("宋体",Font.PLAIN,20));
            });
            
            fontItem40.addActionListener(e->{
                textArea.setFont(new Font("宋体",Font.PLAIN,40));
            });
        }
        
        
        
        //setVisible:设置窗口显示
        public void setVisible(Boolean visible) {
            this.visible = visible;
            this.notPadFrame.setVisible(this.visible);
        }
    }
    
    public class notePad {
    
        public static void main(String[] args) {
            notPadcontainer oneNote = new notPadcontainer();
            oneNote.setVisible(true);
        }
    
    }
    相关文章
    相关标签/搜索
    4887铁算王中王开奖结果小说 驻马店市| 彰化县| 鄂尔多斯市| 克拉玛依市| 西乌珠穆沁旗| 家居| 邵阳县| 阳西县| 元朗区| 鹿邑县| 扎鲁特旗| 和平区| 醴陵市| 德清县| 禄丰县| 威宁| 托克逊县| 新巴尔虎右旗| 嘉祥县| 柳河县| 西青区| 北票市| 称多县| 永川市| 海阳市| 锡林浩特市| 阿克苏市| 鱼台县| 静安区| 万安县| 威远县| 高台县| 阜南县| 郧西县| 涪陵区| 邵阳县| 瑞安市| http://fa.hz0j1r6vo.fun http://fa.hz0j2r6vo.fun http://fa.hz0j1r2vo.fun http://fa.hz0j0r3vo.fun http://fa.hz0j0r9vo.fun