动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.如何使用Java编写NT服务(一).
.给大家推荐几个方便java编辑的软.
.构建高性能J2EE应用的5种策略.
.如何用java拷贝本地文件夹.
.在Eclipse RCP中实现控制反转(Io.
.TOMCAT+JIVE的安装配置.
.Effective java学习笔记8.
.利用反射机制实现XML-RPC.
.引用造型protected和private的困.
.[JAVA100例]069、使用SAX解析XML.
.java开源项目研究 2. 开源的历史.
.有效地对软件进行交互式诊断的技.
.Java Transaction API概述.
.JAVA基础知识(5).
.java计算磁盘空间的大小.
.深入分析java中类的构造.
.toLocaleString 方法.
.JAVA连接SQLSERVER的例子.
.必须执行清除.
.Effective java学习笔记2:使用私.

用Java编写的记事本程序

发表日期:2008-1-5 |



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

/*************************************************
*------------------------------------------------
* PopupMenuItem
*------------------------------------------------
*************************************************/
/*
* pundo
**/
JMenuItem pundo=new JMenuItem("撤销(U)");
pundo.addActionListener(new Pop_undo_actionAdapter(this));
pundo.setMnemonic(´U´);
pundo.setAccelerator(KeyStroke.getKeyStroke(´U´,java.awt.Event.CTRL_MASK,true));

/*
* pcut
**/
JMenuItem pcut=new JMenuItem("剪切(X)");
pcut.addActionListener(new Pop_cut_actionAdapter(this));
pcut.setMnemonic(´X´);
pcut.setAccelerator(KeyStroke.getKeyStroke(´X´,java.awt.Event.CTRL_MASK,true));

/*
* pcopy
**/
JMenuItem pcopy=new JMenuItem("复制(C)");
pcopy.addActionListener(new Pop_copy_actionAdapter(this));
pcopy.setMnemonic(´C´);
pcopy.setAccelerator(KeyStroke.getKeyStroke(´C´,java.awt.Event.CTRL_MASK,true));

/*
* ppaste
**/
JMenuItem ppaste=new JMenuItem("粘贴(V)");
ppaste.addActionListener(new Pop_paste_actionAdapter(this));
ppaste.setMnemonic(´V´);
ppaste.setAccelerator(KeyStroke.getKeyStroke(´V´,java.awt.Event.CTRL_MASK,true));

/*
*pdelete
**/
JMenuItem pdelete=new JMenuItem("删除(D)");
pdelete.addActionListener(new Pop_delete_actionAdapter(this));
pdelete.setMnemonic(´D´);
pdelete.setAccelerator(KeyStroke.getKeyStroke(´D´,java.awt.Event.CTRL_MASK,true));




////////
///////////// text////////////////////////////////////////
text.setDoubleBuffered(false);
text.setToolTipText("杨勇的记事本");
text.setVerifyInputWhenFocusTarget(true);
text.setText("");

text.addCaretListener(new Jsb_text_caretAdapter(this));
text.addMouseListener(new Jsb_text_mouseAdapter(this));
text.addAncestorListener(new Jsb_text_ancestorAdapter(this));

//////////////////////////////////////////////////////////
Mbar.add(jFile);
Mbar.add(jEdit);
Mbar.add(jFormat);
Mbar.add(jHelp);

jFile.add(jnew);
jFile.add(jopen);
jFile.addSeparator();
jFile.add(jsave);
jFile.add(jsaveas);
jFile.addSeparator();
jFile.add(jquite);

jEdit.add(jundo);
jEdit.addSeparator();
jEdit.add(jcut);
jEdit.add(jcopy);
jEdit.add(jpaste);
jEdit.add(jdelete);
jEdit.addSeparator();
jEdit.add(jfind);
jEdit.add(jreplace);
jEdit.addSeparator();
jEdit.add(jselectall);
jEdit.add(jdate);

jFormat.add(jword);
jFormat.addSeparator();
jFormat.add(jfont);
jFormat.addSeparator();
jFormat.add(jcolor);

jHelp.add(jabout);

pop.add(pundo);
pop.addSeparator();
pop.add(pcut);
pop.add(pcopy);
pop.add(ppaste);
pop.add(pdelete);

frame.setVisible(true);



}
/************************************************************
//////////////////////Event/////////////////////////////////
**************************************************************/

public void frame_windowclose_windowClosing(WindowListener e){
this.close();
}
/////////////////////////////////////////////////////////
public void text_mouseClicked(MouseEvent e){
if(e.getModifiers()==InputEvent.BUTTON3_MASK){
pop.show((Component)e.getSource(),e.getX(),e.getY());
}
}
public void text_ancestorAdded(AncestorEvent e){
this.dirty=false;
this.newtext();
}
public void text_caretUpdate(CaretEvent e)
{
this.dirty=true;
//this.statubar.setText(this.text.getText());
}
///////////// File /////////////////////////////////////
public void File_open_actionPerformed(ActionEvent e){
//打开的事件
this.opentext();
}

public void File_new_actionPerformed(ActionEvent e){
///新建的事件
this.newtext();
}

public void File_save_actionPerformed(ActionEvent e){
//保存的事件
this.save();
}

public void File_saveas_actionPerformed(ActionEvent e){
//另存为
this.saveas();
}
public void File_quite_actionPerformed(ActionEvent e){
this.close();
}
////////////////// Edit /////////////////////////////////////
public void Edit_undo_actionPerformed(ActionEvent e){
//撤销
this.undo();
}
public void Edit_cut_actionPerformed(ActionEvent e){
//剪切
this.cut();
}
public void Edit_copy_actionPerformed(ActionEvent e){
//复制
this.copy();
}
public void Edit_paste_actionPerformed(ActionEvent e){
//粘贴
this.paste();
}
public void Edit_delete_actionPerformed(ActionEvent e){
//删除
this.delete();
}
public void Edit_find_actionPerformed(ActionEvent e){
//查找
int cu=this.text.getCaretPosition();
int end=this.text.getText().length();
FindDlg fd=new FindDlg(frame,"查找",true);
fd.show();
String str=fd.getFindStr().trim();


if(fd.getFlag()){
this.nextFindStr(str,cu,end);
}else{
this.upFindStr(str,cu);
}

}
public void Edit_replace_actionPerformed(ActionEvent e){
//替换
int cu=this.text.getCaretPosition();
int end=this.text.getText().length();
ReplaceDlg rd=new ReplaceDlg(frame,"替换",true);
rd.show();
this.replaceStr(rd.findStr().trim(),rd.replaceStr().trim(),cu,end);
}
public void Edit_selectall_actionPerformed(ActionEvent e){
//全选
this.text.setSelectionStart(0);
this.text.setSelectionEnd(this.text.getText().length());
}
public void Edit_timedate_actionPerformed(ActionEvent e){
//时间日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
this.text.append("
上一篇:用JAI扩展Java的图像处理能力 人气:999
下一篇:用java 实现 http 的断点续传 人气:679
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-12-2 OpenPNE中文 v2.12.5 for win 中
2008-12-2 谷秋精品课程软件课程版 v2.3
2008-12-2 晴天电影系统(带一键迅雷/自定义
2008-12-2 QQip138闪字程序
2008-12-2 SmartWeb企业智能建站系统 v1.0.2
2008-12-2 梦想不死个人主页 v2009
2008-12-2 开良ASP小偷程序生成器 v1.1
2008-12-2 toolxp.cnalexa世界排名查询 php
2008-12-2 腾讯留言板 v1.3
2008-11-29 Tencent Traveler 4.4
2008-11-29 龙卷风网络收音机 v3.0.0.0
2008-11-29 Intel Chipset Software Install
2008-11-29 TweakVI 1.0 Build 1100
2008-11-29 Opera 9.62 Build 10469
2008-11-29 MPlayer WW编译版 SVN-r28044(20
2008-11-29 NetTools网络工具v1.0.0破解版
2008-11-29 3DGallery三维体验1.1破解版
2008-11-29 SecretBook保密本v1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | OPEN参数生成器 | 弹出式窗口代码产生器 | 密码登录生成器 | 在线按钮生成器 | Meta标签生成器 | 多色彩特效字代码生成器 | 网页代码调试器 | 在线FTP登陆 | Flash取色器 | 配色代码对照表 | 配色辞典 | CSS生成器 | 广告代码 | 框架网页代码生成器 | js/vbs加密 | md5加密 | 进制转换 | UTF-8 转换工具 | 在线调色板 | Html转换js | Html转换asp | Html转换php | Html转换perl
实用工具:汉字翻译拼音 | 拼音字典 | 符号对照表 | 个税计算 | 实时汇率查询换算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 | 国家代码与域名缩写 | 文字加密解密 | 元素周期表 | 健康查询 | 世界时间 | 万年历 | 二十四节气 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2009 www.knowsky.com All rights reserved | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵
SEO対策 中国語教室 ホームページ作成