什么功能都没有 记事本程序

来源:互联网 发布:三菱plc编程软件仿真 编辑:程序博客网 时间:2024/04/30 11:09

package NotePad;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class NotePad
{
 //components
 private static Frame frame = new Frame("NotePad v2.0");

 private static MenuBar mb = new MenuBar();
 private static Menu fileM = new Menu("File");
 
 private static Menu newM = new Menu("New");
 private static MenuItem txtMI = new MenuItem("Txt");
 private static MenuItem openMI = new MenuItem("Open...");
 private static MenuItem closeMI = new MenuItem("Close");
 private static MenuItem saveMI = new MenuItem("Save");
 private static MenuItem saveAsMI = new MenuItem("Save as...");
 private static MenuItem quitMI = new MenuItem("Quit");
 
 private static Menu toolsM = new Menu("Tools");
 private static MenuItem showDirMI = new MenuItem("ShowDir");

 private static TextArea showTA = new TextArea("",0,0,TextArea.SCROLLBARS_VERTICAL_ONLY);
 private static Label statusL = new Label("Welcome to NotePad v2.0");

 private static File file = null;
 private static Dialog dia;

 //main function
 public static void main(String[] args)
 {
  init();
  frameEvent();
  menuBarEvent();
  textAreaEvent();
 }

 //UI
 private static void init()
 {
  frame.setBounds(400,200,480,500);
  frame.setLayout(new BorderLayout());
  frame.setMenuBar(mb);

  mb.add(fileM);
  fileM.add(newM);
  newM.add(txtMI);
  fileM.add(openMI);
  fileM.add(saveMI);
  fileM.add(saveAsMI);
  fileM.add(closeMI);
  fileM.add(quitMI);

  mb.add(toolsM);
  toolsM.add(showDirMI);

  frame.add(showTA);
  frame.add(statusL,BorderLayout.SOUTH);

  frame.setVisible(true);
 }

 //frameEvent
 private static void frameEvent()
 {
  frame.addWindowListener(new WindowAdapter()
  {
   public void windowClosing(WindowEvent wef)
   {
    System.exit(0);
   }
  });
 }

 //menuBarEvent
 private static void menuBarEvent()
 {
  //what is this?
  /*
  openMI.addMouseListener(new MouseAdapter()
  {
   public void mouseEntered(MouseEvent meo)
   {
    statusL.setText("Open txt file(s).");
   }
   public void mouseExited(MouseEvent mexo)
   {
    statusL.setText("Welcome to NotePad v2.0");
   }
  });
  */

  txtMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent aen)
   {
    file = null;
    showTA.setText("");
   }
  });

  openMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent aeo)
   {
    if (file != null || showTA.getText() != "")
    {
     statusL.setText("Warning:File is not saved yet,all data will be lost.");
    }
    FileDialog openFD = new FileDialog(frame,"Open file...",FileDialog.LOAD);
    openFD.setVisible(true);
    try
    {
     if (openFD.getDirectory() == null || openFD.getFile() == null)
     {
      statusL.setText("You chose nothing or it is not a TxtFile.");
      return;
     }
     file = new File(openFD.getDirectory(),openFD.getFile());
     BufferedReader br = new BufferedReader(new FileReader(file));
     String buffer = null;
     while ((buffer = br.readLine()) != null)
     {
      showTA.append(buffer+"\t\n");
     }
     br.close();
    }
    catch (IOException oioe)
    {
     throw new RuntimeException("Open file failed.");
    }
   }
  });

  saveMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent aes)
   {
    if (file != null)
    {
     statusL.setText("Saving file.");
     saveFile(file);
    }
    else
    {
     FileDialog saveFD = new FileDialog(frame,"Save file...",FileDialog.SAVE);
     saveFD.setVisible(true);
     if (saveFD.getDirectory() == null || saveFD.getFile() == null)
     {
      statusL.setText("It is not a directory or TxtFile.");
      return;
     }
     file = new File(saveFD.getDirectory(),saveFD.getFile());
     saveFile(file);
    }
   }
  });

  saveAsMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent saae)
   {
    statusL.setText("Saving file as.");
    FileDialog saveAsFD = new FileDialog(frame,"Save file as...",FileDialog.SAVE);
    saveAsFD.setVisible(true);
    if (saveAsFD.getDirectory() == null || saveAsFD.getFile() == null)
    {
     statusL.setText("It is not a directory or TxtFile.");
     return;
    }
    file = new File(saveAsFD.getDirectory(),saveAsFD.getFile());
    saveFile(file);
   }
  });

  closeMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent aec)
   {
    if (file != null || showTA.getText() != "")
    {
     statusL.setText("Warning:File is not saved yet,all data will be lost.");
    }
    file = null;
    showTA.setText("");
   }
  });

  quitMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent qae)
   {
    System.exit(0);
   }
  });

  showDirMI.addActionListener(new ActionListener()
  {
   public void actionPerformed(ActionEvent aesd)
   {
    dia = new Dialog(frame,"Warning!",false);
    Label  l = new Label("Warning:File is not saved yet,all data will be lost,please save your data before continue...");
    dia.setLayout(new BorderLayout());
    dia.setBounds(360,300,500,88);
    dia.add(l,BorderLayout.CENTER);
    dia.setVisible(true);
    dia.addWindowListener(new WindowAdapter()
    {
     public void windowClosing(WindowEvent wed)
     {
      dia.setVisible(false);
      statusL.setText("Select a directory.");
      FileDialog selectDir = new FileDialog(frame,"Make a choice...",FileDialog.LOAD);
      selectDir.setVisible(true);
      try
      {
       if (selectDir.getDirectory() == null)
       {
        statusL.setText("It is not a directory");
        return;
       }
       else
       {
        file = new File(selectDir.getDirectory());
        if (!(file.exists() && file.isDirectory()))
        {
         statusL.setText("You select a invalid path.");
         return;
        }
        else
        {
         String[] dirList = file.list();
         showTA.setText("");
         for (String dir : dirList)
         {
          showTA.append(dir+"\t\n");
         }
        }
       }
      }
      catch (Exception ioes)
      {
       throw new RuntimeException("File read failed.");
      }
     }
    });
   }
  });
 }

 //textAreaEvent
 private static void textAreaEvent()
 {
  showTA.addMouseListener(new MouseAdapter()
  {
   public void mouseEntered(MouseEvent mes)
   {
    statusL.setText("Document editing...");
   }
   public void mouseExited(MouseEvent mexs)
   {
    statusL.setText("Welcome to NotePad v2.0");
   }
  });
 }

 //save file
 private static void saveFile(File file)
 {
  try
  {
   BufferedWriter bw = new BufferedWriter(new FileWriter(file));
   bw.write(showTA.getText());
   bw.close();
  }
  catch (IOException sioe)
  {
   throw new RuntimeException("Save file failed.");
  }
 }
 
}