java图形化界面编程之记事本

来源:互联网 发布:navmesh 寻路算法 编辑:程序博客网 时间:2024/05/21 10:47
package day25;

import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;

public class Notepad {
        JFrame frame=new JFrame("记事本");
        
            //菜单条
            JMenuBar bar=new JMenuBar();
            //面板
            JPanel panel=new JPanel();
            //文件菜单
            JMenu fileMenu=new JMenu("文件");
            JMenu editMenu=new JMenu("编辑");
            
            JMenu other=new JMenu("选项"); //复选菜单
            //文件菜单功能项
            JMenuItem open=new JMenuItem("打开");
            JMenuItem save=new JMenuItem("保存");
                    
            //编辑菜单功能项
            JMenuItem about=new JMenuItem("关于");
            JMenuItem exit=new JMenuItem("退出");
            
            //复选菜单
            JMenuItem work1=new JMenuItem("项目1");
            JMenuItem work2=new JMenuItem("项目2");
            JMenuItem work3=new JMenuItem("项目3");
            
            TextArea textArea=new TextArea();
          
        public  void InitNotepad(){
            
            //窗口添加菜单条
            frame.add(bar,BorderLayout.NORTH);
            frame.add(textArea);
            //菜单条添加文件菜单
            bar.add(fileMenu);
            bar.add(editMenu);
            
            //文件菜单项添加功能
            fileMenu.add(open);
            fileMenu.add(save);
            //复选菜单
            other.add(work1);
            other.add(work2);
            other.add(work3);
            fileMenu.add(other);
            
            //编辑菜单添加功能
            editMenu.add(about);
            editMenu.add(exit);
                         
            fileMenu.add(other);
            
            //向打开添加事件
            open.addActionListener(new ActionListener() {            
                
                public void actionPerformed(ActionEvent e) {
                        
                    try {
                        FileDialog filedialog=new FileDialog(frame,"请选择要打开的文件",FileDialog.LOAD);
                        filedialog.setVisible(true);
                        //将要打开的文件显示出来
                        String path=filedialog.getDirectory(); //获取用户打开的文件路径
                        String filename=filedialog.getFile(); //获取打开的文件名
                        //读取要打开的文件的内容

                            FileInputStream fileInputStream=new FileInputStream(new File(path,filename));
                            int length=0;
                            byte [] buf=new byte[1024];
                            while((length=fileInputStream.read(buf))!=-1){
                                String content=(new String(buf,0,length));
                                //将内容加到文本区域
                               textArea.setText(content);
                            }
                            
                            fileInputStream.close();
                    }  catch (IOException e1) {
                        e1.printStackTrace();
                    }        
                }
            });
            //给保存添加事件
            save.addActionListener(new ActionListener(){                
                public void actionPerformed(ActionEvent e) {
                    try {
                        FileDialog fileDialog=new FileDialog(frame,"请选择要保存的路径",FileDialog.SAVE);
                        fileDialog.setVisible(true);
                        //获取用户选择的路径和文件名
                        String path=fileDialog.getDirectory();
                        String filename=fileDialog.getFile();
                        //创建输出对象
                        FileOutputStream fileoutputStream=new FileOutputStream(new File(path,filename));
                        //获取文本区域内容
                        String content=textArea.getText();
                        //将文本内容写出
                        
                        fileoutputStream.write(content.getBytes());
                        fileoutputStream.close();
                        
                    }  catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            });
            
            
            FrameUtil.InitFrame(frame, 600, 500);
    }
        
        public static void main(String[] args) {
            new Notepad().InitNotepad();
            
        }
}

原创粉丝点击