zoukankan      html  css  js  c++  java
  • java实现简单的记事本

    包含打开文件,保存文件,复制,粘贴,剪切功能,都是在菜单栏目上实现的功能

    源代码:

    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.filechooser.FileFilter;
    import static java.awt.event.InputEvent.*;
    import java.awt.datatransfer.*;
    import java.util.Enumeration;
    import java.util.Hashtable;
    /*import javax.swing.*;
    import javax.swing.filechooser.FileFilter;
    
    import java.awt.event.*;
    import java.awt.*;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;*/
    
    class jishiben 
    {
      public static void main(String args[])
      {
         TextEdit TE=new TextEdit("记事本");
      }
    }
    class TextEdit extends Frame implements ActionListener
    {
       MenuBar m;
       Menu m1,m2;
       MenuItem xinjian,dakai,baocun,tuichu,jianqie,fuzhi,zhantie;
       TextArea text;
       String filename;
       FileDialog openFD,saveFD;
       BufferedReader in;
       FileReader read;
       BufferedWriter out;
       FileWriter writer;
       Clipboard cb;
       TextEdit(String s)
       {
         super(s);
         m=new MenuBar();
         m1=new Menu("文件");
         xinjian=new MenuItem("新建");
         dakai=new MenuItem("打开");
         baocun=new MenuItem("保存");
         tuichu=new MenuItem("退出");
         m2=new Menu("编辑");
         jianqie=new MenuItem("剪切");
         fuzhi=new MenuItem("复制");
         zhantie=new MenuItem("粘贴");
         text=new TextArea();
         openFD=new FileDialog(this,"打开",FileDialog.LOAD);
         saveFD=new FileDialog(this,"保存",FileDialog.SAVE);
         filename="NoName";
         
         m1.add(xinjian);
         m1.addSeparator();
         m1.add(dakai);
         m1.addSeparator();
         m1.add(baocun);
         m1.addSeparator();
         m1.add(tuichu);
         m2.add(jianqie);
         m2.addSeparator();
         m2.add(fuzhi);
         m2.addSeparator();
         m2.add(zhantie);
         m.add(m1);
         m.add(m2);
         
         //关键部分,没有为cb申请内存,下面对cb操作会出错
        cb = new Clipboard("nothing");
         //
         
         setMenuBar(m);
         setSize(300,400);setVisible(true);
         add(text,"Center");
         
         xinjian.addActionListener(this);
         dakai.addActionListener(this);
         baocun.addActionListener(this);
         tuichu.addActionListener(this);
         jianqie.addActionListener(this);
         fuzhi.addActionListener(this);
         zhantie.addActionListener(this);
         addWindowListener(new WindowAdapter()
                          {
                            public void windowClosing(WindowEvent e)
                            {
                              System.exit(0);
                            }
                          });
        }
        
        public void actionPerformed(ActionEvent e)
        {
          if(e.getSource()==xinjian)
           {
             text.setText("");
           }
          if(e.getSource()==dakai)
           {
            openFD.show();
            String s;
            filename=openFD.getDirectory()+openFD.getFile();
            if(filename!=null)
             {
              try
               {
                File file=new File(filename);
                read=new FileReader(file);
                in=new BufferedReader(read);
                while((s=in.readLine())!=null)
                    text.append(s+'\n');
                in.close();
                read.close();
               }
                catch(IOException e2){}
             }
           }
          
          if(e.getSource()==baocun)
          {
            saveFD.show();
            filename=saveFD.getDirectory()+saveFD.getFile();
            if(filename!=null)
            {
             try
               {
                File file=new File(filename);
                writer=new FileWriter(file);
                out=new BufferedWriter(writer);
                out.write(text.getText(),0,(text.getText()).length());
                
                out.close();
                writer.close();
               }
              catch(IOException e2){} 
            }
          }
          if(e.getSource()==tuichu)
          {
            System.exit(0);
          }
          
          
          
          
         if(e.getSource()==jianqie)
          {
          //类text中没有cut方法,不能使用text.cut
            String s=text.getSelectedText();
            StringSelection select=new StringSelection(s);
            cb.setContents(select,null);
            text.replaceRange("",text.getSelectionStart(),text.getSelectionEnd());
          }
          if(e.getSource()==fuzhi)
          {
          //同上,没有copy这个方法
            String s=text.getSelectedText();
            StringSelection select=new StringSelection(s);
            cb.setContents(select,null);
          }
          if(e.getSource()==zhantie)
          {
          //同上,没有paste方法
               String s="";
              Transferable t = cb.getContents(null);
              try 
              {
                    if (t != null
                        && t.isDataFlavorSupported(DataFlavor.stringFlavor)) 
                    {
                            // 因为原系的剪贴板里有多种信息, 如文字, 图片, 文件等
                            // 先判断开始取得的可传输的数据是不是文字, 如果是, 取得这些文字
                            
                        s = (String)t.getTransferData(DataFlavor.stringFlavor);
                            // 同样, 因为Transferable中的DataFlavor是多种类型的,
                            // 所以传入DataFlavor这个参数, 指定要取得哪种类型的Data.
                            //System.out.println(s);
                    }
              } 
              catch (UnsupportedFlavorException ex) 
              {
                    ex.printStackTrace();
              } 
              catch (IOException ex) 
              {
                    ex.printStackTrace();
              }
              
              text.insert(s,text.getCaretPosition());
              
          }
          
        }
      
       
    }

    作者:涵曦www.hanxi.cc
    出处:hanxi.cnblogs.com
    GitHub:github.com/hanxi
    Email:im.hanxi@gmail.com
    文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    《 Skynet 游戏服务器开发实战》

  • 相关阅读:
    在Excel中查找/替换时使用换行符
    用fieldset标签轻松实现Tab选项卡效果
    用JSFL将Flash中的元件导出为PNG
    PHP学习笔记之PDO
    网页中的数学公式
    解决fl.findObjectInDocByType/fl.findObjectInDocByName的毛病
    HTML+CSS 网页中鼠标滚轮失效的解决办法
    jQuery 离开页面时提示
    ASP 计算出指定年份生肖
    au3创建Access数据库表例子
  • 原文地址:https://www.cnblogs.com/hanxi/p/2469002.html
Copyright © 2011-2022 走看看