了解下JAVA的用java完成编纂器的取消、重做功能
最后就是我对java的几点希望:首先是IDE工具,有人说java已经很好了,有jbuilder,eclipse,netBeans等等,但是我认为如果java想超越.net,那么他首先要解决的就是IDE工具的整合。用java完成编纂器的取消、重做功效,十分的便利,上面是一个完成这个功效的类,
importjava.awt.event.ActionEvent;
importjavax.swing.AbstractAction;
importjavax.swing.Action;
importjavax.swing.JEditorPane;
importjavax.swing.KeyStroke;
importjavax.swing.event.UndoableEditEvent;
importjavax.swing.event.UndoableEditListener;
importjavax.swing.text.JTextComponent;
importjavax.swing.undo.CannotRedoException;
importjavax.swing.undo.CannotUndoException;
importjavax.swing.undo.UndoManager;
/**
*UndoWrapperisresponsibleforaddingundoandredosupporttotextcomponents.
*@authorAntonioVieiro(antonio@antonioshome.net),$Author:$
*@version$Revision:$
*/
publicclassUndoWrapper
implementsUndoableEditListener
{
privateUndoManagerundoManager;
privateUndoActionundoAction;
privateRedoActionredoAction;
privateJEditorPanetextComponent;
/**
*CreatesanewinstanceofUndoWrapper
*/
publicUndoWrapper(JEditorPaneaComponent)
{
textComponent=aComponent;
undoManager=newUndoManager();
undoAction=newUndoAction();
redoAction=newRedoAction();
textComponent.getDocument().addUndoableEditListener(this);
textComponent.getInputMap().put((KeyStroke)undoAction.getValue(
Action.ACCELERATOR_KEY),"undo");
textComponent.getInputMap().put((KeyStroke)redoAction.getValue(
Action.ACCELERATOR_KEY),"redo");
textComponent.getActionMap().put("undo",undoAction);
textComponent.getActionMap().put("redo",redoAction);
}
publicvoidundoableEditHappened(UndoableEditEvente)
{
undoManager.addEdit(e.getEdit());
undoAction.updateUndoState();
redoAction.updateRedoState();
}
/**
*UndoActionistheActionresponsibleforhandlingtheundooperation.
*/
classUndoAction
extendsAbstractAction
{
publicUndoAction()
{
super("Cannotundo");//TODO:I18N
setEnabled(false);
putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke("ctrlZ"));
}
publicvoidactionPerformed(ActionEvente)
{
try
{
undoManager.undo();
}
catch(CannotUndoExceptioncue)
{
//TODO:Uselogging?
cue.printStackTrace(System.err);
}
updateUndoState();
redoAction.updateRedoState();
}
voidupdateUndoState()
{
if(undoManager.canUndo())
{
setEnabled(true);
putValue(Action.NAME,"Undo");//TODOI18N
}
else
{
setEnabled(false);
putValue(Action.NAME,"Cannotundo"); //TODOI18N
}
}
}
/**
*RedoActionistheActionresponsibleforhandlingtheredooperation.
*/
classRedoAction
extendsAbstractAction
{
publicRedoAction()
{
super("Cannotredo"); //TODOI18N
setEnabled(false);
putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke("ctrlY"));
}
publicvoidactionPerformed(ActionEvente)
{
try
{
undoManager.redo();
}
catch(CannotRedoExceptioncre)
{
//TODO:Uselogging?
cre.printStackTrace(System.err);
}
updateRedoState();
undoAction.updateUndoState();
}
voidupdateRedoState()
{
if(undoManager.canRedo())
{
setEnabled(true);
putValue(Action.NAME,"Redo"); //TODOI18N
}
else
{
setEnabled(false);
putValue(Action.NAME,"Cannotredo"); //TODOI18N
}
}
}
UndoActiongetUndoAction()
{
returnundoAction;
}
RedoActiongetRedoAction()
{
returnredoAction;
}
}
利用的时分,只必要将你创立的JEditorPane作为对象传进UndoWrapper中便可。利用体例以下newUndoWrapper(editorPane);
OK如许你的编纂器就具有了UndoRedo功效,并且是次数不收限定的。
JAVA学习必须明确这是一项投资,对于大多数的人来说,学习JAVA是为了就业,还有就是刚走向工作位置的朋友想尽快赶上工作的节奏。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种突破用户端机器环境和CPU 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。 不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
页:
[1]