| |
这个学期,我们学习了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 //------------------------------------------------------
/************************************************* *------------
|
|