我的记事本

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import java.io.*;
/**main */
public class NotepadTest{
 public static void main(String[] args){
  Notepad notepadFrame=new Notepad();
  notepadFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  notepadFrame.setLocation(width,height);
  notepadFrame.setVisible(true);
 }
   static int width=Toolkit.getDefaultToolkit().getScreenSize().width/4;
   static int height= Toolkit.getDefaultToolkit().getScreenSize().height/4;
}

/**a Notepad frame */
class Notepad extends JFrame{
 public Notepad( ){
  setTitle("我的记事本");
  setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
     JMenuBar menuBar=new JMenuBar();
     this.setJMenuBar(menuBar);
    
     JMenu fileMenu=new JMenu("文件(F)");
     fileMenu.setMnemonic(KeyEvent.VK_F);
     JMenuItem newItem=fileMenu.add(new TextAction("新建(N)"));
     newItem.setMnemonic(KeyEvent.VK_N);
     newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
       
     JMenuItem openItem=fileMenu.add(new TextAction("打开(O)"));
     openItem.setMnemonic(KeyEvent.VK_O);
     openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
   
     JMenuItem saveItem=fileMenu.add(new TextAction("保存(S)"));
     saveItem.setMnemonic(KeyEvent.VK_S);
     saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
    
     JMenuItem saveAsItem=fileMenu.add(new TextAction("另存为(A)"));
     saveAsItem.setMnemonic(KeyEvent.VK_A);
    
     fileMenu.addSeparator();
    
     JMenuItem pageSetupItem=fileMenu.add(new TextAction("页面设置(U)"));
     pageSetupItem.setMnemonic(KeyEvent.VK_U);
     pageSetupItem.setEnabled(false);
    
     JMenuItem printItem=fileMenu.add(new TextAction("打印(P)"));
     printItem.setMnemonic(KeyEvent.VK_P);
     printItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
     printItem.setEnabled(false);
    
     fileMenu.addSeparator();
     
    JMenuItem exitItem= fileMenu.add(new
         AbstractAction("退出(X)"){
         public void actionPerformed(ActionEvent event)
         {
       System.exit(0);
         }
      
         });
      exitItem.setMnemonic(KeyEvent.VK_X);    
        
     JMenu editMenu=new JMenu("编辑(E)");
     editMenu.setMnemonic(KeyEvent.VK_E);
 
     Action retractAction=new TextAction("撤消(U)");
     JMenuItem retractItem=editMenu.add(retractAction);
     retractItem.setMnemonic(KeyEvent.VK_U);
     retractItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
     retractItem.setEnabled(false);
         
     editMenu.addSeparator();
     Action cutAction=new TextAction("剪贴(T)");
     JMenuItem cutItem=editMenu.add(cutAction);
     cutItem.setMnemonic(KeyEvent.VK_T);
     cutItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
    
     Action copyAction=new TextAction("复制(C)");
     JMenuItem copyItem=editMenu.add(copyAction);
     copyItem.setMnemonic(KeyEvent.VK_C);
     copyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
    
     Action pasteAction=new TextAction("粘贴(P)");
     JMenuItem pasteItem=editMenu.add(pasteAction);
     pasteItem.setMnemonic(KeyEvent.VK_P);
     pasteItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
     
     Action deleteAction=new TextAction("删除(L)");   
     JMenuItem deleteItem=editMenu.add(deleteAction);
     deleteItem.setMnemonic(KeyEvent.VK_L);
     deleteItem.setAccelerator(KeyStroke.getKeyStroke("DELETE"));
    
     editMenu.addSeparator();
    
     JMenuItem lookupItem=editMenu.add(new TextAction("查找(F)"));
     lookupItem.setMnemonic(KeyEvent.VK_F);
     lookupItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
  lookupItem.setEnabled(false);
    
     JMenuItem lookupNextItem=editMenu.add(new TextAction("查找下一个(N)"));
     lookupNextItem.setMnemonic(KeyEvent.VK_N);
     lookupNextItem.setAccelerator(KeyStroke.getKeyStroke("F3"));
     lookupNextItem.setEnabled(false);   
    
     JMenuItem replaceItem=editMenu.add(new TextAction("替换(R)"));
     replaceItem.setMnemonic(KeyEvent.VK_R);
     replaceItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
     replaceItem.setEnabled(false);
        
     JMenuItem gotoItem=editMenu.add(new TextAction("转到(G)"));
     gotoItem.setMnemonic(KeyEvent.VK_G);
     gotoItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_MASK));
     gotoItem.setEnabled(false);
    
   editMenu.addSeparator();
    
     Action selectAllAction=new TextAction("全选(A)");
     JMenuItem selectAllItem=editMenu.add(selectAllAction);
     selectAllItem.setMnemonic(KeyEvent.VK_A);
     selectAllItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
        
     JMenuItem timeDateItem=editMenu.add(new TextAction("时间/日期(D)"));
     timeDateItem.setMnemonic(KeyEvent.VK_D);
     timeDateItem.setAccelerator(KeyStroke.getKeyStroke("F5")); 
     timeDateItem.setEnabled(false);
              
     JMenu formatMenu=new JMenu("格式(O)");
     formatMenu.setMnemonic(KeyEvent.VK_O);
    
     lineWrapItem=formatMenu.add(new TextAction("自动换行(W)"));
     lineWrapItem.setMnemonic(KeyEvent.VK_W);
         
     JMenuItem fontItem=formatMenu.add(new TextAction("字体(F)"));
     fontItem.setMnemonic(KeyEvent.VK_F);
     fontItem.setEnabled(false);
         
     JMenu viewMenu=new JMenu("查看(V)");
     viewMenu.setMnemonic(KeyEvent.VK_V);
    
     JMenuItem stateItem=viewMenu.add(new TextAction("状态栏(S)"));
     stateItem.setMnemonic(KeyEvent.VK_S);
     stateItem.setEnabled(false);
    
         
     JMenu helpMenu=new JMenu("帮助(H)");
     helpMenu.setMnemonic(KeyEvent.VK_H);
    
     JMenuItem helpTextItem=helpMenu.add(new TextAction("帮助主题(H)"));
     helpTextItem.setMnemonic(KeyEvent.VK_H);
         
     helpMenu.addSeparator();
    
     JMenuItem aboutMyNotepadItem=helpMenu.add(new TextAction("关于我的记事本(A)"));
     aboutMyNotepadItem.setMnemonic(KeyEvent.VK_A);
    
    
     menuBar.add(fileMenu);
     menuBar.add(editMenu);
     menuBar.add(formatMenu);
     menuBar.add(viewMenu);
     menuBar.add(helpMenu);
    
  
     JPopupMenu popup=new JPopupMenu();
                          
               
     popup.add(cutAction);
      
     popup.add(copyAction);
     
     popup.add(pasteAction);
     
     popup.add(deleteAction);
     
     popup.addSeparator();
     
     popup.add(selectAllAction);
     
        area=new JTextArea();
  //area.setLineWrap(true);
  area.setFont(new Font("serif",Font.BOLD,16));
  area.setWrapStyleWord(true);
     area.setComponentPopupMenu(popup);
     
     JScrollPane scrollPane=new JScrollPane(area,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED ,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        add(scrollPane);
    
 }
 
 private JFrame frame=this;
 private static int DEFAULT_WIDTH=600;
 private static int DEFAULT_HEIGHT=400;
    private JTextArea area;
    JMenuItem lineWrapItem;
    private   JFileChooser   fileChooser1;
    private   JFileChooser   fileChooser2;

   
    private void openFile() throws IOException{
   
     String filePath=fileChooser1.getSelectedFile().getAbsolutePath();
     FileReader fr=new FileReader(filePath);
     BufferedReader   br   =   new   BufferedReader(fr);
        String   str;
        while   ((str   =   br.readLine())   !=   null)
        area.setText(area.getText()   +   str   +   "/n ");
        br.close();
        fr.close();
    }

    private void saveFile() throws IOException{
     String   filepath2   =   fileChooser2.getSelectedFile().getAbsolutePath();

        FileWriter   fw   =   new   FileWriter(filepath2);
        BufferedWriter   bw   =   new   BufferedWriter(fw);
        PrintWriter   pw   =   new   PrintWriter(bw);
        pw.print(area.getText());
        bw.close();
        fw.close();    
    }
   
    private class TextAction extends AbstractAction
    {
       public  TextAction(String name)
       {
           super(name);
       }
 
       public void actionPerformed(ActionEvent event)
       {
           System.out.println(getValue(Action.NAME)+"selected");
              String  command=event.getActionCommand();
             
              if("新建(N)".equals(command)){
               area.setText(" ");
                 frame.setTitle("无标题-记事本");
              }
             
              if("打开(O)".equals(command)){
               fileChooser1=new JFileChooser();
                 fileChooser1.showOpenDialog(frame);
                 try{
                  openFile();
                 }catch (IOException e){
                 }
              }
             
              if("保存(S)".equals(command)){
               fileChooser2=new JFileChooser();
               fileChooser2.showSaveDialog(frame);
               try{
                saveFile();
               }catch (IOException e){
               }
              }
             
              if("另存为(A)".equals(command)){
               fileChooser2=new JFileChooser();
               fileChooser2.showSaveDialog(frame);
               try{
                saveFile();
               }catch (IOException e){
               }
              }
                        
             
              if("剪贴(T)".equals(command)){
               area.cut();
              }
             
              if("复制(C)".equals(command)){
               area.copy();
              }
             
              if("粘贴(P)".equals(command)){
               area.paste();
              }
             
              if("删除(L)".equals(command))
              {
                 String st=area.getText();
                 int z=st.length();
               int x=0;int y=0;
               x=area.getSelectionStart();
               y=area.getSelectionEnd();          
               System.out.println(x+"/n"+y+"/n"+z);
               try{
                 System.out.println(area.getText(0,x));
                 System.out.println(area.getText(y,z-y));
               area.setText(area.getText(0,x)+area.getText(y,z-y));
               }catch (BadLocationException e) {
               }
               
                
              }
             
              if("全选(A)".equals(command)){
               area.selectAll();
              }
             
              if("自动换行(W)".equals(command)){
             
                 if(!area.getLineWrap())
                 {  
                  area.setLineWrap(true);
                  lineWrapItem.setText("√自动换行(W)");
                  command="√自动换行(W)";
                 }
               }   
             else if("√自动换行(W)".equals(command))
                {   
                     area.setLineWrap(false);
                     lineWrapItem.setText("自动换行(W)");
                     command="自动换行(W)";                                      
                }
             
             
              if("关于我的记事本(A)".equals(command)){
               JOptionPane.showMessageDialog(null,"版主:李海峰/n时间:10/30/2007","关于我的记事本",JOptionPane.INFORMATION_MESSAGE);
              }
             
              if("帮助主题(H)".equals(command)){
               JOptionPane.showMessageDialog(null,"我的第一个记事本,谢谢大家使用");
              }
        
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值