这个学期,我们学习了java编程,期末之时老师要我们编个记事本作为这门课程的课程设计,我写了一个,大体上的功能都实现了,只有"撤销"的功能没有实现,请各位大虾指点一下,“撤销”的算法,不甚感激!
特将记事本的源码附下,请大家指点,看还有没有更简洁高效的算法,请不要吝啬,我的e-mail:yangyong@ccsu.cn,欢迎大家来信指点!
/*
*
*题目:记事本程序
*author: jeason
*
* 2004-12-20
*
**/
package jeason;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class jsb{
///
boolean dirty=true;
string filename="";
string strtext="";
///////////////////////////////////
////////// menu ////////////////
///////////////////////
jframe frame=new jframe("我的记事本");
jpopupmenu pop=new jpopupmenu("弹出");
jtextarea text=new jtextarea();
jlabel statubar=new jlabel("状态栏");
jmenubar mbar=new jmenubar();
jfilechooser jfilechooser1=new jfilechooser();
jcolorchooser jcolor=new jcolorchooser();
jmenu jfile=new jmenu("文件");
jmenu jedit=new jmenu("编辑");
jmenu jformat=new jmenu("格式");
jmenu jhelp=new jmenu("帮助");
jmenuitem jnew=new jmenuitem("新建(n)");
public jsb(){ ///无参数的构造函数
///
this.dirty=false;
/////
final borderlayout borderlayout1=new borderlayout();
frame.setsize(600,500);//
frame.addwindowlistener(new jsb_frame_closingadapter(this));
jpanel panel=new jpanel();
panel.setlayout(borderlayout1);//布局
panel.add(new jscrollpane(text));//滚动条
panel.add(statubar,borderlayout1.south);
frame.getcontentpane().add(panel);
//
frame.setjmenubar(mbar); //将主菜单添加到窗体中
/*
* jnew
**/
//jnew
jnew.addactionlistener(new file_new_actionadapter(this));
jnew.setmnemonic(´n´);//n上下划线
jnew.setaccelerator(keystroke.getkeystroke(´n´,java.awt.event.ctrl_mask,true));
//快捷方式
/*
* jopen
**/
jmenuitem jopen=new jmenuitem("打开(o)");//jopen
jopen.addactionlistener(new file_open_actionadapter(this));
jopen.setmnemonic(´o´);
jopen.setaccelerator(keystroke.getkeystroke(´o´,java.awt.event.ctrl_mask,true));
/*
* jsave
**/
jmenuitem jsave=new jmenuitem("保存(s)");
jsave.addactionlistener(new file_save_actionadapter(this));
jsave.setmnemonic(´s´);
jsave.setaccelerator(keystroke.getkeystroke(´s´,java.awt.event.ctrl_mask,true));
/*
* jsave as
**/
jmenuitem jsaveas=new jmenuitem("另存为...");
jsaveas.addactionlistener(new file_saveas_actionadapter(this));
/*
* jquite
**/
jmenuitem jquite=new jmenuitem("关闭(q)");
jquite.addactionlistener(new file_quite_actionadapter(this));
jquite.setmnemonic(´q´);
jquite.setaccelerator(keystroke.getkeystroke(´q´,java.awt.event.ctrl_mask,true));
//------------------------------------
// jfile code of end
//--------------------------------------
/**
* jedit code
*/
//jundo
jmenuitem jundo=new jmenuitem("撤销(u)");
jundo.addactionlistener(new edit_undo_actionadapter(this));
jundo.setmnemonic(´u´);
jundo.setaccelerator(keystroke.getkeystroke(´u´,java.awt.event.ctrl_mask,true));
/*
* jcut
**/
jmenuitem jcut=new jmenuitem("剪切(x)");
jcut.addactionlistener(new edit_cut_actionadapter(this));
jcut.setmnemonic(´x´);
jcut.setaccelerator(keystroke.getkeystroke(´x´,java.awt.event.ctrl_mask,true));
/*
* jcopy
**/
jmenuitem jcopy=new jmenuitem("复制(c)");
jcopy.addactionlistener(new edit_copy_actionadapter(this));
jcopy.setmnemonic(´c´);
jcopy.setaccelerator(keystroke.getkeystroke(´c´,java.awt.event.ctrl_mask,true));
/*
* jpaste
**/
jmenuitem jpaste=new jmenuitem("粘贴(v)");
jpaste.addactionlistener(new edit_paste_actionadapter(this));
jpaste.setmnemonic(´v´);
jpaste.setaccelerator(keystroke.getkeystroke(´v´,java.awt.event.ctrl_mask,true));
/*
* jdelete
**/
jmenuitem jdelete=new jmenuitem("删除(d)");
jdelete.addactionlistener(new edit_delete_actionadapter(this));
jdelete.setmnemonic(´d´);
jdelete.setaccelerator(keystroke.getkeystroke(´d´,java.awt.event.ctrl_mask,true));
/*
* jfind
**/
jmenuitem jfind=new jmenuitem("查找(f)");
jfind.addactionlistener(new edit_find_actionadapter(this));
jfind.setmnemonic(´f´);
jfind.setaccelerator(keystroke.getkeystroke(´f´,java.awt.event.ctrl_mask,true));
/*
* jreplace
**/
jmenuitem jreplace=new jmenuitem("替换(r)");
jreplace.addactionlistener(new edit_replace_actionadapter(this));
jreplace.setmnemonic(´r´);
jreplace.setaccelerator(keystroke.getkeystroke(´r´,java.awt.event.ctrl_mask,true));
/*
*jselectall
**/
jmenuitem jselectall=new jmenuitem("全选(a)");
jselectall.addactionlistener(new edit_selectall_actionadapter(this));
jselectall.setmnemonic(´a´);
jselectall.setaccelerator(keystroke.getkeystroke(´a´,java.awt.event.ctrl_mask,true));
/*
* jdate
**/
jmenuitem jdate=new jmenuitem("日期/时间(t)");
jdate.addactionlistener(new edit_timedate_actionadapter(this));
jdate.setmnemonic(´t´);
jdate.setaccelerator(keystroke.getkeystroke(´t´,java.awt.event.ctrl_mask,true));
//------------------------------
// jedit code of end
//
//-----------------------------
/*
* jword
**/
jmenuitem jword=new jmenuitem("自动换行");
jword.addactionlistener(new format_word_actionadapter(this));
/*
* jfont
**/
jmenuitem jfont=new jmenuitem("字体..");
jfont.addactionlistener(new format_font_actionadapter(this));
/*
* jcolor
**/
jmenuitem jcolor=new jmenuitem("颜色...");
jcolor.addactionlistener(new format_color_actionadapter(this));
//--------------------------------------------------
// jformat code of end
//--------------------------------------------------
/*
* jabout
**/
jmenuitem jabout=new jmenuitem("关于作者(a)");
jabout.addactionlistener(new help_about_actionadapter(this));
jabout.setmnemonic(´a´);
jabout.setaccelerator(keystroke.getkeystroke(´a´,java.awt.event.ctrl_mask,true));
//-------------------------------------------------
// jhelp code of end
//------------------------------------------------------
/*************************************************
*------------
闽公网安备 35060202000074号