记事本程序

来源:互联网 发布:mac怎么安装axure 编辑:程序博客网 时间:2024/05/16 04:46
package q;

import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuItem;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
 
public class MyFrame extends JFrame implements ActionListener {
   JTextArea textArea = new JTextArea();
   JMenuBar menuBar = new JMenuBar();
   JMenu fileMenu = new JMenu("File(F)");
   JMenuItem newItem = new JMenuItem("New(N)");
   JMenuItem openItem = new JMenuItem("Open(o)");
   JMenuItem saveItem = new JMenuItem("Save(S)");
   JMenuItem saveAsItem = new JMenuItem("Save As(A)");
   JMenuItem exitItem = new JMenuItem("Exit(E)");
   JMenu editMenu = new JMenu("Edit(E)");
   JMenuItem selectItem = new JMenuItem("Select All...");
   JMenuItem copyItem = new JMenuItem("Copy(C)");
   JMenuItem cutItem = new JMenuItem("Cut(T)");
   JMenuItem pasteItem = new JMenuItem("Paste(P)");
   JMenu setMenu=new JMenu("Set(S)");
   JMenuItem colorItem=new JMenuItem("Color(O)");
   JMenu HelpMenu=new JMenu("Help(H)");
   JMenuItem HelpTopicItem=new JMenuItem("HelpTopic(L)");
   JMenuItem AboutNoteItem=new JMenuItem("About");
   
   String fileName = null;
   Toolkit toolKit=Toolkit.getDefaultToolkit();
   Clipboard clipBoard=toolKit.getSystemClipboard();
   
    private FileDialog openFileDialog = new FileDialog(this,"Open File",FileDialog.LOAD);
    private FileDialog saveAsFileDialog = new FileDialog(this,"Save File As",FileDialog.SAVE);
 
  public MyFrame(){
    setTitle("记事本程序");
    setFont(new Font("Times New Roman",Font.PLAIN,12));
    setBackground(Color.white);
    setSize(400,300);
    setLocationRelativeTo(null);
    
    fileMenu.add(newItem);
    newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
    fileMenu.add(openItem);
    openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
    fileMenu.addSeparator();
    fileMenu.add(saveItem);
    saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
    fileMenu.add(saveAsItem);
    saveAsItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
    fileMenu.addSeparator();
    fileMenu.add(exitItem);
    exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
    editMenu.add(selectItem);
    editMenu.addSeparator();
    editMenu.add(copyItem);
    copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
    editMenu.add(cutItem);
    cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_MASK));
    editMenu.add(pasteItem);
    pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
    setMenu.add(colorItem);
    colorItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
    HelpMenu.add(HelpTopicItem);
    HelpTopicItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
    HelpMenu.add(AboutNoteItem);
    
    menuBar.add(fileMenu);
    menuBar.add(editMenu);
    menuBar.add(setMenu);
    menuBar.add(HelpMenu);
    
    setJMenuBar(menuBar);
    add(textArea);
    addWindowListener(new WindowAdapter(){
                      public void windowClosing(WindowEvent e){
                          System.exit(0);
                        }
                      });
    newItem.addActionListener(this);
    openItem.addActionListener(this);
    saveItem.addActionListener(this);
    saveAsItem.addActionListener(this);
    exitItem.addActionListener(this);
    selectItem.addActionListener(this);
    copyItem.addActionListener(this);
    cutItem.addActionListener(this);
    pasteItem.addActionListener(this);
    colorItem.addActionListener(this);
    HelpTopicItem.addActionListener(this);
    AboutNoteItem.addActionListener(this);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
  }
 
public void actionPerformed(ActionEvent e) {  //监听事件
    Object eventSource = e.getSource();
    if(eventSource == newItem){
      textArea.setText("");
    }else if(eventSource == openItem){
      openFileDialog.show();
      fileName = openFileDialog.getDirectory()+openFileDialog.getFile();
      if(fileName != null)
        readFile(fileName);
    }else if (eventSource == saveItem){
      if(fileName != null)
        writeFile(fileName);
    }else if(eventSource == saveAsItem){
      saveAsFileDialog.show();
      fileName = saveAsFileDialog.getDirectory()+saveAsFileDialog.getFile();
      if (fileName!= null)
        writeFile(fileName);
    }else if(eventSource == selectItem){
       textArea.selectAll();
    }else if(eventSource == copyItem){
       String text=textArea.getSelectedText();
       StringSelection selection=new StringSelection(text);
       clipBoard.setContents(selection,null);
    }else if(eventSource == cutItem){
       String text=textArea.getSelectedText();
       StringSelection selection=new StringSelection(text);
       clipBoard.setContents(selection,null);
       textArea.replaceRange("",textArea.getSelectionStart(),textArea.getSelectionEnd());
    }else if(eventSource == pasteItem){
       Transferable contents=clipBoard.getContents(this);
       if(contents==null) return;
       String text;
       text="";
       try{
            text=(String)contents.getTransferData(DataFlavor.stringFlavor);
        }catch(Exception exception){
        }
       textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());
    }else if(eventSource ==colorItem){

         JColorChooser chooser=new JColorChooser();
        Color color=chooser.showDialog(null, "调色板", Color.WHITE);
        textArea.setForeground(color);
        
    }else if(eventSource==HelpTopicItem){
        textArea.requestFocus();  
        JOptionPane.showMessageDialog(this,"路漫漫其修远兮,吾将上下而求索。","HelpTopic",JOptionPane.INFORMATION_MESSAGE);  
    }else if(eventSource==AboutNoteItem)  
    {   textArea.requestFocus();  
    JOptionPane.showMessageDialog(this,  
        "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n"+  
        " 编写者:晨曦 \n"+  
        " 编写时间:2017-06-01                          \n"+  
        " 更多教程:http://pan.muyi.so (网盘资源教程应有尽有哦!)     \n"+  
        " e-mail:llqqxf@163.com                \n"+  
        " 一些地方借鉴他人,不足之处希望老师能提出意见,谢谢!  \n"+  
        "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n",  
        "记事本",JOptionPane.INFORMATION_MESSAGE);  
}//关于结束  
    
    else if(eventSource == exitItem){
        int exitChoose=JOptionPane.showConfirmDialog(this,"是否退出?","退出提示",JOptionPane.YES_NO_OPTION);  
        if(exitChoose==JOptionPane.YES_OPTION)  
        {    System.exit(1);
        }
    }
  }
 
  public void readFile(String fileName){ //读取文件处理
    try{
      File file = new File(fileName);
      FileReader readIn = new FileReader(file);
      int size = (int)file.length();
      int charsRead = 0;
      char[] content = new char[size];
      while(readIn.ready())
        charsRead += readIn.read(content, charsRead, size - charsRead);
      readIn.close();
      textArea.setText(new String(content, 0, charsRead));
    }
    catch(IOException e){
      System.out.println("Error opening file");
    }
  }
 
  public void writeFile(String fileName){  //写入文件处理
    try{
      File file = new File (fileName);
      FileWriter writeOut = new FileWriter(file);
      writeOut.write(textArea.getText());
      writeOut.close();
    }
    catch(IOException e){
      System.out.println("Error writing file");
    }
  }
 
public static void main(String[] args){
      MyFrame frame = new MyFrame(); //创建对象
   }
}