仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 501|回复: 13
打印 上一主题 下一主题

[学习教程] 发布一篇用JBuilder完成相似Visual Studio的宏扩大功效

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:27:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再说说缺点:首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
关于VisualStudio的宏,人人应当很熟习了,这是一篇关于JBuilder完成相似VisualStudio的宏扩大功效,我们就经由过程对一段代码是不是正文失落作为复杂例子。人人能够完成本人的一些扩大,算是抛玉引砖了。
撑持情况:Jbuilder4.0-JBuilder7.0
利用JBuilder编译时必要在Project--->ProjectProperties--->RequiredLibaries中加上Jbuilder下的OpenToolSDK,编译乐成后将天生的class打包成一个JavaCommentSwitch.jar文件,个中包括如许一个文件META-INFManifest.mf,该文件内容以下:
Manifest-Version:1.0
OpenTools-UI:JavaCommentSwitch
不必要甚么具体的解说,代码以下:
/*===============================================
文件一:IDEActions.java
===============================================*/
  /**
*
  Title:JBuilderIDEToolbox
*
  Description:http://www.vchelp.net/itbookreview/view_user.asp?user_name=ghost
*
  Copyright:Copyright(c)2002GhostStudio.AllRightsReserved.
*
  Company:GhostStudio
*@author阿鬼[mornlee@21cn.com]
*@version1.0
*/
  importcom.borland.primetime.actions.ActionGroup;
importcom.borland.primetime.editor.EditorContextActionProvider;
importcom.borland.primetime.editor.EditorPane;
importjavax.swing.Action;
  publicclassIDEActions
{
privatestaticfinalStringSTRING_ActionGroupName="JBuilderIDEToolbox";//ActiveGroupsName
publicstaticfinalEditorContextActionProviderCONTEXTMENU_ActionProvider=newEditorContextActionProvider()
{
publicActiongetContextAction(EditorPanetarget)
{
ActionGroupactionGroup=newActionGroup();
ActionGroupactionSubGroup=newActionGroup(STRING_ActionGroupName);
actionSubGroup.add(JavaCommentSwitch.ACTION_GenerateJavaCommentSwitch);
//此处能够增添更多的功效
//......
actionGroup.add(actionSubGroup);
returnactionGroup;
}
  publicintgetPriority()
{
return0;
}
};
  publicIDEActions()
{
}
  staticclassction
implementsEditorContextActionProvider
{
publicActiongetContextAction(EditorPanetarget)
{
ActionGroupactionGroup=newActionGroup();
ActionGroupactionSubGroup=newActionGroup(STRING_ActionGroupName);
actionSubGroup.add(JavaCommentSwitch.ACTION_GenerateJavaCommentSwitch);
actionGroup.add(actionSubGroup);
returnactionGroup;
}
  publicintgetPriority()
{
return0;
}
  ction()
{
}
}
  }
  /*===============================================
文件二:JavaCommentSwitch.java
===============================================*/
  /**
*
  Title:JBuilderIDEToolbox
*
  Description:http://www.vchelp.net/itbookreview/view_user.asp?user_name=ghost
*
  Copyright:Copyright(c)2002GhostStudio.AllRightsReserved.
*
  Company:GhostStudio
*@author阿鬼[mornlee@21cn.com]
*@version1.0
*/
  importcom.borland.jbuilder.jot.*;
importcom.borland.jbuilder.node.JBProject;
importcom.borland.jbuilder.node.JavaFileNode;
importcom.borland.primetime.editor.*;
importcom.borland.primetime.ide.Browser;
importcom.borland.primetime.node.FileNode;
importcom.borland.primetime.node.Node;
importcom.borland.primetime.vfs.Url;
importjava.awt.event.ActionEvent;
importjava.beans.PropertyChangeEvent;
importjava.beans.PropertyChangeListener;
importjava.io.File;
importjava.io.PrintStream;
importjavax.swing.*;
importjavax.swing.text.JTextComponent;
importjavax.swing.text.Keymap;
  publicclassJavaCommentSwitchextendsEditorAction
implementsPropertyChangeListener
{
privatestaticfinalStringversionString="0.1";
publicstaticEditorActionACTION_CreateJavaCommentSwitch=newJavaCommentSwitch("JavaCommentSwitch");
protectedstaticStringSTR_LONG_DESCRIPTION="Comment/Uncommentforselection.";//形态条显现
protectedstaticStringSTR_SHORT_DESCRIPTION="Comment/Uncommentforselection.";
publicstaticEditorActionACTION_GenerateJavaCommentSwitch=newJavaCommentSwitch("JavaCommentSwitch",true);
protectedstaticStringMENU_STR_LONG_DESCRIPTION="Comment/Uncommentforselection";
protectedstaticStringMENU_STR_SHORT_DESCRIPTION="Comment/Uncomment";
staticBrowserbrowser=null;
privateEditorPanetarget;
privateStringerrorMessageText;
privatebooleanisMenuAction;
  publicJavaCommentSwitch(Stringname)
{
super(name);
target=null;
errorMessageText="";
isMenuAction=false;
}
  publicJavaCommentSwitch(Stringname,booleanisMenuAction)
{
super(name);
target=null;
errorMessageText="";
this.isMenuAction=isMenuAction;
}
  publicstaticvoidinitOpenTool(bytemajorVersion,byteminorVersion)
{
if(majorVersion<4)//撑持Jbuilder4.0以上
return;
EditorManager.registerContextActionProvider(IDEActions.CONTEXTMENU_ActionProvider);
ACTION_GenerateJavaCommentSwitch.putValue("LongDescription",MENU_STR_LONG_DESCRIPTION);
ACTION_GenerateJavaCommentSwitch.putValue("ShortDescription",MENU_STR_SHORT_DESCRIPTION);
EditorActions.addBindableEditorAction(ACTION_CreateJavaCommentSwitch);
ACTION_CreateJavaCommentSwitch.putValue("LongDescription",STR_LONG_DESCRIPTION);
ACTION_CreateJavaCommentSwitch.putValue("ShortDescription",STR_SHORT_DESCRIPTION);
Keymapkeymap=EditorManager.getKeymap();//撑持快速键ALT+F10
if(keymap!=null)
{
KeyStrokestroke[]=keymap.getKeyStrokesForAction(ACTION_CreateJavaCommentSwitch);
if(stroke==null)
keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(java.awt.Event.F10,
java.awt.Event.ALT_MASK),ACTION_CreateJavaCommentSwitch);
}
EditorManager.addPropertyChangeListener((PropertyChangeListener)ACTION_CreateJavaCommentSwitch);
}
  publicvoidactionPerformed(ActionEventevt)
{
target=getEditorTarget(evt);
NodetheNode=getNode();
if(theNode==null)
return;
JBProjectproj=(JBProject)theNode.getProject();
JotClasstheClass=getClass(theNode);
if(isMenuAction)
if(theClass!=null)
runJavaCommentSwitch();
else
JOptionPane.showMessageDialog(null,
    "CurrentEditortargetisnotajavaclass.",
    "Errorcreatingjavadoc",0);
}
  /**
*@description
*
*@param
*@return
*@exception
*/
privatebooleanrunJavaCommentSwitch()
{
Stringselection=target.getSelectedText();
StringnewSelection="";
//往失落正文
if(selection.trim().startsWith("/*")&&selection.trim().endsWith("*/"))
{
StringBuffersb=newStringBuffer(selection);
newSelection=sb.substring(2,selection.length()-2);
}
//增加正文
else
{
newSelection=String.valueOf(String.valueOf((newStringBuffer("/*")).append(selection).append("*/")));
}
target.replaceSelection(newSelection);
returntrue;
}
  publicvoidpropertyChange(PropertyChangeEventevt)
{
StringpropertyName=evt.getPropertyName();
if(propertyName.equals("keymap"))
{
Keymapkeymap=EditorManager.getKeymap();
if(keymap!=null)
{
KeyStrokestroke[]=keymap.getKeyStrokesForAction(ACTION_CreateJavaCommentSwitch);
if(stroke==null)
keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(java.awt.Event.F10,
java.awt.Event.ALT_MASK),ACTION_CreateJavaCommentSwitch);
}
}
}
  protectedNodegetNode()
{
Browserbrowser=Browser.getActiveBrowser();
Nodenode=browser.getActiveNode();
if((nodeinstanceofJavaFileNode)&&(node.getProject()instanceofJBProject))
returnnode;
else
returnnull;
}
  protectedJotClassgetClass(Nodenode)
{
if((nodeinstanceofJavaFileNode)&&(node.getProject()instanceofJBProject))
{
JBProjectproject=(JBProject)node.getProject();
Stringfilename=((JavaFileNode)node).getUrl().getFile();
JotPackagespkg=project.getJotPackages();
Urlurl=newUrl(newFile(filename));
JotFilejfile=pkg.getFile(url);
JotClassjclasses[]=jfile.getClasses();
if(jclasses.length>1)
{
System.err.println("Morethanoneclassfoundinsourcefile");
errorMessageText="Morethanoneclassfoundinsourcefile";
returnnull;
}
if(jclasses.length==0)
{
System.err.println("Noclassesfoundinsourcefile");
errorMessageText="Noclassesfoundinsourcefile";
returnnull;
}else
{
returnjclasses[0];
}
}else
{
returnnull;
}
}
}

关于第二点:俺问问你,如果是企业级项目的话,诸如RMI,EJB,等一些关键技术,这些难道都不需要学么?如果光是使用jsp,servlet,javabean的话。
小魔女 该用户已被删除
沙发
发表于 2015-1-24 12:51:56 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
飘飘悠悠 该用户已被删除
板凳
发表于 2015-2-1 12:39:08 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
兰色精灵 该用户已被删除
地板
发表于 2015-2-4 13:22:15 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
因胸联盟 该用户已被删除
5#
 楼主| 发表于 2015-2-4 20:35:18 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
再见西城 该用户已被删除
6#
发表于 2015-2-9 02:39:07 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
蒙在股里 该用户已被删除
7#
发表于 2015-2-10 05:19:38 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
海妖 该用户已被删除
8#
发表于 2015-2-13 01:47:09 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
金色的骷髅 该用户已被删除
9#
发表于 2015-2-18 11:45:25 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
精灵巫婆 该用户已被删除
10#
发表于 2015-2-28 19:10:47 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
不帅 该用户已被删除
11#
发表于 2015-3-3 18:42:18 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
只想知道 该用户已被删除
12#
发表于 2015-3-11 12:20:27 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小妖女 该用户已被删除
13#
发表于 2015-3-18 10:41:52 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
第二个灵魂 该用户已被删除
14#
发表于 2015-3-25 16:12:50 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表