`
rainytimes
  • 浏览: 7369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用java写的一个小记事本

    博客分类:
  • J2SE
阅读更多
/*
 * 自己写的一个小记事本,
 * 为了方便编译,把一些用到的东西都写成了内部类了,
 * 不过感觉还有很多方面欠缺,谢谢指正!
 * 
 * 
 * 
 * **/

import java.awt.BorderLayout;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
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.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.*;


public class EditFrame extends Frame{
 
// 添加TextArea
    TextArea ta=new TextArea();
 File currentfile=null;
 

 public void creatFrame(){
  //设置菜单栏
  MenuBar mb=new MenuBar();
  Menu menufile =new Menu("File");
  Menu menuedit =new Menu("Edit");
  Menu menuhelp=new Menu("Help");
  
  MenuItem fileitemnew=new MenuItem("New");
  MenuItem fileitemopen=new MenuItem("Open");
  MenuItem fileitemsave=new MenuItem("Save");
  MenuItem fileitemsaveas=new MenuItem("Save As");
  MenuItem fileitemexit=new MenuItem("Exit");
  
  fileitemopen.addActionListener(new OpenAction(this));
  fileitemexit.addActionListener(new ExitAction());
  fileitemsave.addActionListener(new SaveAction());
  fileitemnew.addActionListener(new NewAction(this));
  fileitemsaveas.addActionListener(new SaveAsAction(this));
  
  menufile.add(fileitemnew);
  menufile.add(fileitemopen);
  menufile.add(fileitemsave);
  menufile.add(fileitemsaveas);
  menufile.add(fileitemexit);
  
  
  
  
  MenuItem edititemcopy=new MenuItem("Copy");
  MenuItem edititemcut=new MenuItem("Cut");
  MenuItem edititempaste=new MenuItem("Paste");
  
  edititempaste.addActionListener(new PasteAction());
  edititemcut.addActionListener(new CutAction());
  edititemcopy.addActionListener(new CopyAction());
  
  menuedit.add(edititemcopy);
  menuedit.add(edititemcut);
  menuedit.add(edititempaste);
  
  
  MenuItem helpitemhelp=new MenuItem("Help");
  MenuItem helpitemabout=new MenuItem("About");
  
  helpitemhelp.addActionListener(new HelpAction());
  helpitemabout.addActionListener(new HelpAction());
  
  menuhelp.add(helpitemhelp);
  menuhelp.add(helpitemabout);
  
  
  mb.add(menufile);
  mb.add(menuedit);
  mb.add(menuhelp);
  
  
  
  //设置Frame
  this.setTitle("MenuTest");
  this.setSize(600,500);
  this.setLocation(200, 200);
  this.setResizable(false);
  this.setMenuBar(mb);
  
  this.add(ta);
  
  
  this.addWindowListener(new WindowAdapter(){
   @Override
   public void windowClosing(WindowEvent arg0) {
    System.exit(0);
   }
  });
  
  this.setVisible(true);
  
  
 }

 public static void main(String[] args){
  
  EditFrame f=new EditFrame();
     f.creatFrame(); 
     
    
  
 }
 class OpenAction implements ActionListener {
  
  Frame f;
  public OpenAction(Frame f){
   this.f=f;
   
  }

  public void actionPerformed(ActionEvent e)  {
//   JFileChooser jfc=new JFileChooser();
//   jfc.setVisible(true);
//   System.out.println("asdg");
     /*
* FileDialog(Frame parent) 
          创建一个文件对话框,用于加载文件。 
FileDialog(Frame parent, String title) 
          创建一个具有指定标题的文件对话框窗口,用于加载文件。 
FileDialog(Frame parent, String title, int mode) 
          创建一个具有指定标题的文件对话框窗口,用于加载或保存文件。 

      * 
mode:
    static int LOAD   0
          此常量值指示文件对话框窗口的作用是查找要读取的文件。 
 static int SAVE   1
          此常量值指示文件对话框窗口的作用是查找要写入的文件。 

      * */
   FileDialog fd=new FileDialog(f,"Open",0);//0 打开对话框
   //FileDialog fd=new FileDialog(f,"Open",1);// 1 保存对话框
   fd.setVisible(true);
      if(fd.getFile()==null)return ;
      
   
   File choosefile=new File(fd.getDirectory(),fd.getFile());
   currentfile=choosefile;
      
      try {
    FileInputStream fis=new FileInputStream(choosefile);
    InputStreamReader isr=new InputStreamReader(fis);
    BufferedReader br=new BufferedReader(isr);
    
     String linestring;
     /*怎么样换行???*/
     while((linestring=br.readLine())!=null){//全部读取
      ta.append(linestring+"\n");
         
      //System.out.println(linestring);
     }
     
     //br.close();
    
    
   } catch (IOException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
   
   
   
      
   
   
   
   
  
  }
  
  
 }
 
 class ExitAction implements ActionListener{

  public void actionPerformed(ActionEvent e) {
   System.exit(0);
   
  }
  
  
 }
 
 class NewAction implements ActionListener{
  
  Frame f;
  public NewAction(Frame f){
   this.f=f;
  }

  public void actionPerformed(ActionEvent arg0) {
   
   FileDialog fd=new FileDialog(f,"New",FileDialog.SAVE);
   
   fd.setVisible(true);
   
   if(fd.getFile()==null)return;
   currentfile=new File(fd.getDirectory(),fd.getFile());
   //System.out.println("asdg");
   
   
  }
 
 }

 
 class SaveAction implements ActionListener{

  public void actionPerformed(ActionEvent arg0) {
   if(currentfile!=null){
   FileOutputStream fos;
   try {
    fos = new FileOutputStream(currentfile);
    OutputStreamWriter osw=new OutputStreamWriter(fos);
    BufferedWriter bw=new BufferedWriter(osw);
    try {
     bw.write(ta.getText());
     bw.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    
    
   } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } 
   
   System.out.println("asdg");
   
   }else return;
   
  } 
 }


 class SaveAsAction implements ActionListener{
  
  Frame f;
  public SaveAsAction(Frame f){
   this.f=f;
   
  }

  public void actionPerformed(ActionEvent arg0) {
   
   FileDialog fd=new FileDialog(f,"Save As",FileDialog.SAVE);
   
   fd.setVisible(true);
   
   currentfile=new File(fd.getDirectory(),fd.getFile());
   SaveAction save=new SaveAction();
   save.actionPerformed(arg0);
   
  }
  
  
  
  
 }
 
// static class SetMenuState{
//  
//  MenuBar mb;
//   public  SetMenuState(MenuBar mb){
//   this.mb=mb;
//   
//  }
//  
//  public void SetMenu(){
//   
//   int i;
//   int j;
//   for(i=0;i<mb.getMenuCount();i++){
//     for(j=0;j<mb.getMenu(i).getItemCount();j++){
//    mb.getMenu(i).getItem(j).getLabel();break;
//     }
//   }
//   
//  }
//  
//  
//  
//  
// }

 class PasteAction implements ActionListener {

  public void actionPerformed(ActionEvent arg0) {
   Clipboard  clipbd=getToolkit().getSystemClipboard();//得到系统剪切板内容
    Transferable clipData =clipbd.getContents(EditFrame.this);//??????
         try {
           String clipString = 
             (String)clipData.
               getTransferData(
                 DataFlavor.stringFlavor);
           ta.replaceRange(clipString, 
             ta.getSelectionStart(), 
             ta.getSelectionEnd());
         } catch(Exception ex) {
           System.out.println("not String flavor");
         }
   
  }
  
  
  
  
 }
 
 class CutAction implements ActionListener {

  public void actionPerformed(ActionEvent arg0) {
   StringSelection clipstring=new StringSelection(ta.getSelectedText());
   Clipboard clipbd=getToolkit().getSystemClipboard();
   clipbd.setContents(clipstring,clipstring);
   ta.replaceRange("", ta.getSelectionStart(), ta.getSelectionEnd());
   
  }

 }
 class CopyAction implements ActionListener{
  
  public void actionPerformed(ActionEvent arg0){
   
   Clipboard cb=getToolkit().getSystemClipboard();
   StringSelection clipstring =new StringSelection(ta.getSelectedText());
   cb.setContents(clipstring, clipstring);
   
  }
  
 }
 
 class HelpAction implements ActionListener{

  public void actionPerformed(ActionEvent arg0) {
   final Dialog help=new Dialog(EditFrame.this,"Help");
   Label lab1=new Label("个人BLOG:http://hi.baidu.com/gosanye/blog");
   
   help.setLayout(new BorderLayout());
   
   help.add(lab1,BorderLayout.CENTER);
   
   help.setSize(300,80);
   help.setResizable(false);
   help.setLocation(400,400);
   help.addWindowListener(new WindowAdapter(){


    public void windowClosing(WindowEvent e){
     help.setVisible(false);
     
    }
    
    
   });
   help.setVisible(true);
   
  }
  
  
  
  
  
  
  
 }
 

}

 
分享到:
评论

相关推荐

    java 写的一个记事本程序

    综上所述,这个"java 写的一个记事本程序"涵盖了Java GUI编程、文件I/O操作、事件处理和用户交互等多个核心知识点,是学习Java基础和实践的好项目。通过这个项目,开发者可以深入理解Java图形界面和文件操作的原理,...

    一个用JAVA编写的记事本.rar_java 记事本_java小记事本_用Java做一个记_记事本 java_记事本程序

    【标签】中的“java_记事本”、“java小记事本”、“用java做一个记”、“记事本_java”和“记事本程序”进一步强调了这个项目是关于使用Java来实现一个记事本程序。其中,“小记事本”可能暗示这是一个轻量级的应用...

    日历记事本Java写的

    标题中的“日历记事本Java写的”表明这是一个使用Java编程语言开发的日历应用程序,它具有记事本功能,能够帮助用户记录日常生活中的事件和提醒。这个应用可能结合了日历视图和文本编辑功能,使得用户可以在查看日期...

    用Java代码编写的记事本

    用Java编写的简易记事本,类似于我们平常用的记事本。

    用JAVA做的一个记事本,很多功能

    java的记事本,功能很强大,有复制粘贴,查找替换,更改字体,字号等一系列功能,

    java写的一个带密码的小型记事本

    【标签】"java写的一个小型记事本"提示我们,这个项目的核心是利用Java的文件操作功能来读取、写入和保存文本数据。Java中的File类和FileInputStream/FileOutputStream类是进行此类操作的基础。此外,可能还使用了...

    一个记事本的源程序_ 用java写的

    一个记事本的源程序_ 用java写的 一个记事本的源程序_ 用java写的

    JAVA记事本 JAVA记事本 JAVA记事本

    这就是一个基本的Java记事本程序的实现框架。当然,实际的程序可能还需要包括更多功能,如剪切、复制、粘贴、查找、替换等,这些都需要通过额外的事件处理和 Swing 的相关组件来实现。同时,为了提高用户体验,我们...

    Java制作的一个记事本程序

    【Java制作的一个记事本程序】是一个利用Java编程语言实现的文本编辑软件,它模仿了Windows操作系统中的记事本功能,提供了基本的文本编辑、保存和读取等操作。这个程序展示了Java在桌面应用开发方面的潜力,特别是...

    用JAVA写的记事本小程序~

    本项目"用JAVA写的记事本小程序"是一个适合初学者入门的实践案例,它通过JAVA语言实现了基本的文本编辑功能,如打开、保存、编辑文本等,帮助初学者理解和掌握JAVA的基础语法以及IO流、Swing库等核心概念。...

    java记事本小程序源代码

    Java记事本小程序是编程领域中的一个基础项目,它通常用于教授初学者如何利用Java语言进行GUI(图形用户界面)编程。在这个项目中,开发者Koma不仅创建了一个基本的记事本应用程序,还包含了色盲检测程序的源码,这...

    java记事本 java 记事本

    java记事本java记事本java记事本java记事本java记事本java记事本java记事本

    java记事本 源代码

    【标题】"java记事本 源代码"所涉及的知识点主要集中在Java编程语言、图形用户界面(GUI)设计以及文件操作上。这个项目利用Java的Swing库来构建一个类似于Windows记事本的应用程序,它实现了文本编辑的基础功能。 ...

    java小型记事本 值得借鉴

    这个Java记事本程序可能包括了基本的文本编辑功能,如新建、打开、保存文件,以及文字的复制、粘贴、剪切、撤销、重做等操作。然而,由于描述中提到的“功能不是很全”,它可能缺乏一些进阶特性,比如查找和替换功能...

    利用JAVA做的一个GUI记事本

    一个简单的JAVA记事本,拥有记事本基本功能,并有显示当前时间,更改背景颜色和字体颜色功能

    java写的记事本

    用java写的记事本,1000行代码,基本上所有的功能都全了(和微软系统自带的记事本的相似度&gt;70%) 其中菜单里新建模块的代码如下: // 菜单 // 新建(N)按钮事件监听 newTextItem.addActionListener(new ...

    JAVA手机记事本,JAVA手机记事本

    JAVA手机记事本,是很好用的JAVA手机记事本,VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV。经验证,金立手机L18可用。JAVA手机记事本,是很好用的JAVA手机记事本,...

    java记事本 简单的java记事本

    【标题】"Java记事本 简单的Java记事本" 提示我们这是一个使用Java编程语言开发的简易文本编辑器。Java是一种广泛使用的面向对象的编程语言,以其跨平台性和“一次编写,到处运行”的特性而闻名。在本项目中,开发者...

    用JAVA语言做的一个记事本

    这个Java记事本项目对于初学者来说是一个很好的实践平台,通过它,可以深入理解Java编程、GUI设计以及文件操作等核心概念。同时,它也为进阶学习者提供了一个基础的起点,可以在此基础上添加更复杂的功能,如文本...

    java模拟Windows的一个记事本

    总之,这个Java Swing记事本项目展示了如何利用Java GUI库创建一个功能丰富的文本编辑器,同时也提供了学习和理解Swing组件、事件处理和文件操作的实践案例。通过深入研究源代码,你可以更好地掌握Java GUI编程,并...

Global site tag (gtag.js) - Google Analytics