黑马程序员技术交流社区

标题: 类似记事本的 打开保存操作,配适当注释 [打印本页]

作者: franksight    时间: 2015-2-3 18:11
标题: 类似记事本的 打开保存操作,配适当注释
  1. //package mymenu;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import java.io.*;
  5. public class MyMenuTest
  6. {
  7.         private Frame f;
  8.         private MenuBar bar;
  9.         private TextArea ta;
  10.         private Menu fileMenu;
  11.         private MenuItem openItem,saveItem,closeItem;
  12.         private FileDialog openDia,saveDia;
  13.         private File file;
  14.         MyMenuTest()
  15.         {
  16.                 init();//初始化
  17.         }
  18.         public void init()
  19.         {
  20.                 //主窗口基本设置
  21.                 f=new Frame("my window");
  22.                 f.setBounds(200,100,700,550);

  23.                 bar=new MenuBar();
  24.                 ta=new TextArea();
  25.                 fileMenu=new Menu("文件");
  26.                 openItem=new MenuItem("打开");
  27.                 saveItem=new MenuItem("保存");
  28.                 closeItem=new MenuItem("关闭");

  29.                 //把三个菜单项openItem,saveItem,closeItem添加到菜单中
  30.                 fileMenu.add(openItem);
  31.                 fileMenu.add(saveItem);
  32.                 fileMenu.add(closeItem);

  33.                 //创建菜单
  34.                 bar.add(fileMenu);
  35.                 f.setMenuBar(bar);
  36.                 //打开,保存窗口设置       
  37.                 openDia=new FileDialog(f,"我要打开",FileDialog.LOAD);
  38.                 saveDia=new FileDialog(f,"我要保存",FileDialog.SAVE);

  39.                 f.add(ta);
  40.                 myEvent();
  41.                 f.setVisible(true);
  42.         }
  43.         private void myEvent()
  44.         {
  45.                 //保存
  46.                 saveItem.addActionListener(new ActionListener()
  47.                 {
  48.                         public void actionPerformed(ActionEvent e)
  49.                         {
  50.                                 if(file==null)
  51.                                 {
  52.                                         //如果一开始写入了东西,而文件不存在,点击保存后便会弹出保存对话框
  53.                                         saveDia.setVisible(true);
  54.                                         String dirPath=saveDia.getDirectory();
  55.                                         String fileName=saveDia.getFile();
  56.                                         if(dirPath==null||fileName==null)
  57.                                                 return;
  58.                                         file=new File(dirPath,fileName);
  59.                                 }
  60.                                 try
  61.                                 {
  62.                                         //写入到文件中
  63.                                         BufferedWriter bufw=new BufferedWriter(new FileWriter(file));
  64.                                         String text=ta.getText();
  65.                                         bufw.write(text);
  66.                                         bufw.close();
  67.                                 }
  68.                                 catch (IOException ex)
  69.                                 {
  70.                                         throw new RuntimeException();
  71.                                 }
  72.                         }
  73.                 });

  74.                 //打开
  75.                 openItem.addActionListener(new ActionListener()
  76.                 {
  77.                         public void actionPerformed(ActionEvent e)
  78.                         {
  79.                                 //显示打开对话框
  80.                                 openDia.setVisible(true);
  81.                                 //获取路径和文件名
  82.                                 String dirPath=openDia.getDirectory();
  83.                                 String fileName=openDia.getFile();
  84.                                 if(dirPath==null||fileName==null)
  85.                                         return ;
  86.                                 //每次打开操作之前都清空ta文本内容
  87.                                 ta.setText("");
  88.                                 file=new File(dirPath,fileName);
  89.                                 try
  90.                                 {
  91.                                         //读文件内容
  92.                                         BufferedReader bufr=new BufferedReader(new FileReader(file));
  93.                                         String line=null;
  94.                                         while((line=bufr.readLine())!=null)
  95.                                                 ta.append(line+"\r\n");
  96.                                         bufr.close();
  97.                                 }
  98.                                 catch (IOException ex)
  99.                                 {
  100.                                         throw new RuntimeException("读取失败");
  101.                                 }
  102.                         }
  103.                 });

  104.                 //'关闭'菜单项执行关闭操作
  105.                 closeItem.addActionListener(new ActionListener()
  106.                 {
  107.                         public void actionPerformed(ActionEvent e)
  108.                         {
  109.                                 System.exit(0);
  110.                         }
  111.                 });
  112.                 //frame窗口的'X'操作
  113.                 f.addWindowListener(new WindowAdapter()
  114.                 {
  115.                         public void windowClosing(WindowEvent e)
  116.                         {
  117.                                 System.exit(0);
  118.                         }
  119.                 });
  120.         }
  121.         public static void main(String[] args)
  122.         {
  123.                 new MyMenuTest();
  124.         }
  125. }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2