GUI学习笔记MyMenuTest.java(2)

 

import java.awt.*;
import java.awt.event.*;
import java.io.*;//未学不懂。。
//保存的功能有bug
//存储时要保存两次才有。
//关闭时优化了确认对话框
//关闭跳出对话框(无操作)

//退出界面跳出文件框。。
 //对话框关闭无效
  //保存异常
  //取消异常(取消成关闭程序)
//文件名不变

class MyMenuTest 
{
 private Frame f;
 private FileDialog fd,saveFD;
 private TextArea ta;
 private MenuBar mb;
 private Menu m;
 private MenuItem closeItem,openFileItem,saveFileItem;
 private File file;
 private Label b;
 private Dialog d;
 private Button saveBut,unSaveBut,quitBut;
 
 MyMenuTest()
 {
  init();
 }
 public void init()
 {
  f=new Frame("我的打开保存文件测试");
  f.setBounds(300,200,600,500);
  
  
  fd=new FileDialog(f,"打开",FileDialog.LOAD);
  saveFD=new FileDialog(f,"保存",FileDialog.SAVE);
  
  mb=new MenuBar();//只是一个Bar 参数为空
  
  m=new Menu("文件");
  
  openFileItem=new MenuItem("打开");
  saveFileItem=new MenuItem("保存");
  closeItem=new MenuItem("退出");
  
  d=new  Dialog (f,"退出",true);
  b=new Label("文件是否保存修改",Label.CENTER);
  saveBut=new Button("保存");
  unSaveBut=new Button("不保存");
  quitBut=new Button("取消");
  d.setBounds(300,200,300,250);
  d.setLayout(new FlowLayout());
  
  ta=new TextArea();
  
  
  

  f.setMenuBar(mb);
  mb.add(m);
  m.add(openFileItem);
  m.add(saveFileItem);
  m.add(closeItem);
  f.add(ta);
  myEvent();
  d.add(b);
  d.add(saveBut);
  d.add(unSaveBut);
  d.add(quitBut);
  f.setVisible(true);

 }
 public void myEvent()
 {
  openFileItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    
     fd.setVisible(true);
     String dirPath=fd.getDirectory();
     String fileName=fd.getFile();
     //System.out.println(dirPath+"...."+fileName);
     if(dirPath==null||fileName==null)
      return;
     ta.setText("");
     file=new File(dirPath,fileName);

     try
     {
      BufferedReader bufr=new BufferedReader(new FileReader(file));

      String line=null;

      while((line=bufr.readLine())!=null)
      {
       ta.append(line+"\r\n");
      }
      bufr.close();
     }
     catch (IOException ex)
     {
      throw new RuntimeException("读取失败");
     }
     

   }
  }
  );
  saveFileItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
     if(file==null)
     {
     saveFD.setVisible(true);
     String dirPath=saveFD.getDirectory();
     String fileName=saveFD.getFile();
     if(dirPath==null||fileName==null)
      return;
     file=new File(dirPath,fileName); 
     }
    else{
     try
       {
       BufferedWriter bufw=new BufferedWriter(new FileWriter(file));

       String text=ta.getText();
       bufw.write(text);
       //bufw.flush();
       bufw.close();
       }
       catch (IOException ex)
      {
       throw new RuntimeException("存储失败");
      }
     }
    
     
     

   }
  }
  );
  f.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent e)
   {
    
     if(file==null)
      d.setVisible(true);
     System.exit(0);
    
    
   } 
     
  }
  );
  ta.addKeyListener(new KeyAdapter()
  {
   
   public void keyPressed(KeyEvent e)
   {
    if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_S)
    {
       if(file==null)
      {
      saveFD.setVisible(true);
      String dirPath=saveFD.getDirectory();
      String fileName=saveFD.getFile();
      if(dirPath==null||fileName==null)
       return;
      file=new File(dirPath,fileName); 
      }
    
      try
      {
      BufferedWriter bufw=new BufferedWriter(new FileWriter(file));

      String text=ta.getText();
      bufw.write(text);
      //bufw.flush();
      bufw.close();
      }
      catch (IOException ex)
     {
      throw new RuntimeException("存储失败");
     }
     
    
     
     
    }
   }
  }
  );
  saveBut.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
     if(file==null)
     {
     saveFD.setVisible(true);
     String dirPath=saveFD.getDirectory();
     String fileName=saveFD.getFile();
     if(dirPath==null||fileName==null)
      return;
     file=new File(dirPath,fileName); 
     }
    else{
     try
       {
       BufferedWriter bufw=new BufferedWriter(new FileWriter(file));

       String text=ta.getText();
       bufw.write(text);
       //bufw.flush();
       bufw.close();
       }
       catch (IOException ex)
      {
       throw new RuntimeException("存储失败");
      }
     }
    
     
     

   }
  }
  );
  unSaveBut.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    System.exit(0);
   }
  }
  );
  quitBut.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    d.setVisible(false);
   }
  }
  );


  

  
  closeItem.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent e)
   {
    d.setVisible(true);
   }
  }
  );
 }
 public static void main(String[] args)
 {
  new MyMenuTest();
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值