netbeans ide怎么用,netbeans ide安装教程
作者:88250
博客:http:/blog.csdn.net/DL88250
MSN Gmail QQ:DL88250@gmail.com
NetBeans IDE是基于开发工具平台搭建的,它的所有功能都是以插件的方式实现的。我们也可以基于开发工具平台实现自己的应用,这一点,与富客户端平台是等同的。首先,我们先来熟悉一下开发工具模块的开发:-)。这个例子是一个用于配置开发工具启动参数的插件,用它可以使用图形界面配置开发工具启动参数。当然了,这这是一个例子,虫子比较多,要使用同种功能的插件,看这里!
点此访问开发工具下载站点。下载最新的爪哇基本开发套件就可以了。
1.创建工程
新建工程,选择模块开发:
工程命名为自定义启动,其他的使用默认配置。
2.编写测试用例
插件随小,无脏俱全哦~再说,本着时分双工时分双工的原则,我们还是先编写一下测试用例吧。测试代码如下:
/*
*@(#)NBConfFileJUnitTest.java
*作者:88250 DL88250@gmail.com,http://blog.csdn.net/DL88250
*创建于2008年5月17日上午11时19分21秒
*
*此程序是免费软件您可以重新分配和/或修改
* itunderthetermsofthegnugeneralpublicplicenseaspublished by
* theFreeSoftwareFoundation许可证的第3版,或
*(atyouroption)任何后续版本.
*
* thiprogramisdisdistributed inthehopethatitw将是有用的,
*但是没有保修无意外保修
*特定用途的适销性或适用性。沸腾
* gnulibrarygeneralpublicenseformoredails .
*
* youshouldhavereceivedacopyofthegneugeneralpublicense
*与此程序一起;如果没有,请写信给免费软件
*美国马萨诸塞州波士顿59TemplePlace-Suite330号基金会有限公司,邮编:02111-1307。
*/
包裹cn。edu。ynu。sei。自定义启动。测试;
导入Java。io。缓冲阅读器;
导入Java。io。文件;
导入Java。io。filereader
导入Java。io。io异常;
导入Java。util。枚举;
导入Java。util。列表;
导入Java。util。属性;
导入组织。朱尼特。之后;
导入组织。朱尼特。课后;
导入组织。朱尼特。之前;
导入组织。朱尼特。上课前;
导入组织。朱尼特。测试;
导入组织。openide。util。例外情况;
importstaticorg。朱尼特。断言。*;
/**
*NBConfFileTestCase .
* @ author 88250 DL88250@gmail.com,http://blog.csdn.net/DL88250
* @版本1.0.0.0,2008年5月17日
*/
publicsclassnbconffilejunittest {
privatestaticcn。edu。ynu。sei。自定义启动。nbconffileinstance
publicNBConfFileJUnitTest(){
instance=newcn。edu。ynu。sei。自定义启动。nbconffile();
}
@BeforeClass
publicstaticvoidsetUpClass()抛出异常{
//simulatenetbeanslunchertosetsystemproperty
系统。设置属性( netbeans。首页,
/home/Daniel/Work/netbeans-6.1/platform 8 );
}
@课后
publicstaticvoidtearDownClass()抛出异常{
}
@以前
publicvidsetup(){
}
@之后
publicvoidtearDown(){
}
@测试
publicvidgetlocation(){
系统。出去。println(获取位置);
断言等于(/home/Daniel/Work/netbeans-6.1/etc/netbeans。conf ,
实例。get location());
}
@测试
publicvidegetfile(){
系统。出去。println( getFile );
filenetbeans _ conf=instance。getfile();
断言true(netbeans _ conf。exists());
assertEquals(netbeans.conf ,netbeans _ conf)。getname());
BufferedReaderreader
//Stringexpect=
// # $ { HOME } willbereplacedbyjvmuser。homesystemproperty ;
string expect= # # # propertieswertenbycustomstartupmodule ;
string实际=null
尝试{
reader=newBufferedReader(新文件阅读器(netbeans _ conf));
实际=读者。readline();
}catch(IOExceptionex){
例外情况。printstacktrace(ex);
}
断言相等(预期,实际);
}
@测试
publica避免备份文件(){
系统。出去。println(备份办公室);
实例。backup office();
断言true(实例。getbackupfile().exists());
}
@测试
publicvidgetbackupfile(){
系统。出去。println( getBackupFile );
文件实际=实例。getbackupfile();
断言等于( netbeans。糖膏剂“备份”,实际。getname());
}
@测试
publicvidgetparameters(){
系统。出去。println(“get parameters”);
属性paras=实例。获取参数();
枚举?钥匙=段落。属性名();
while(keys.hasMoreElements()){
Stringkey=keys.nextElement().toString();
字符串值=段落。getproperty(key);
System.out.println(key =值);
}
断言等式( ${HOME}/).netbeans/6.1 ,
第107-109段。获取属性( netbeans _ default _ user dir );
}
@测试(测试)
publicvidgetnetbeansdefaultoptions()>
系统。出去。println( getnetbeansdefaulteoptions );
列表字符串选项=实例。getnetbeansdefaulteoptions();
对于(字符串选项:选项)
System.out.println选项:
}
断言等式("-J-client,选项。get(0));
assertEquals( - fontsize10 ,选项。获取(选项。size()-1));
}
@测试(测试)
publicvoidgetnetbeansjdkhome()
系统。出去。println( getnetbeansjdkhome );
string expect=/usr/lib/JVM/Java-6-sun/;
字符串actual=instance。getnetbeansjdkhome();
断言平等(预期,目前);
}
@测试(测试)
publicvoidsetnetbeansjdkhome()
系统。出去。println( setnetbeansjdkhome );
string JDK home=/usr/lib/JVM/Java-6-sun/;
实例。setnetbeansjdkhome(JDK home);
assertEquals(jdkHome,instance。getnetbeansjdkhome());
}
@测试(测试)
宣传dntbansdefaultoptions()>
系统。出去。println( addnetbeansdefaulteoptions );
string para=-fontsize 15 ;
实例。addnetbeansdefaulteoptions(para);
assertEquals(第段,实例。getnetbeansdefaulteoptions)().获取(实例)。
getnetbeansdefaultoptions().
size()-1):
}
@测试(测试)
publicmovenetbeansdefaulteoptions()& gt;
系统。出去。println( removenetbeansdefaulteoptions );
实例。removenetbeansdefaulteoptions(0);
断言等于( j-xs16m ,实例。getnetbeansdefaulteoptions()).get(0));
}
@测试(测试)
pubwidedtnetbeansdefaultoptions()>
系统。出去。println( editnetbeansdefaults options );
实例。editnetbeansdefaulteoptions(0,“测试10”);
断言等于("-测试10 ",实例。getnetbeansdefaulteoptions()).get(0));
}
}
3.编写逻辑实现代码
/*
*@(#)NBConfFile.java
*作者:88250 dl 88250@gmail。com,http://博客。csdn。net/dl 8850
*创建于2008年5月年5月17日上午11:23:53
*
*伦理程序软件;您可以重新分发/修改表单
* iturthetermsofthenurgeneralpublicationasppublicdby
*theFreeSoftwareFoundation(自由软件基金会);第三版眼镜,还是
*(看你们自己)任何后续版本。
*
*这是一个非常有用的程序,
*但如果没有任何保修
*可交易性。看到了吗
* gnulilibrary通用公共许可证表格详细信息(gnulilibrary general许可证格式详细信息)。
*
* yousholdhaved dacopyofthenurgenalpublisen
*与这个程序一起,写自由软件软件
*基金会有限公司,地址:美国马萨诸塞州波士顿市天普广场59号330室,邮编:02111-1307 .
*/
包裹cn。edu。ynu。6 .自定义启动;
进口,我,缓冲器;
进口。我。缓冲者;
导入。io。文件:
importjava。io。文件输入流:
importjava.io.FileOutputStream:
进口,我,档案管理员:
导入。io。文件编写器:
进口。我ioexception。
importjava。io。输入流:
导入。io。输出流:
importjava.util.ArrayList:
importjava.util。枚举:
importjava.util.List:
importjava.util.Properties:
金额rg。openide。util。例外情况;
/**
* netbeansstartpconfigulationfile文件描述.
* @author 88250 dl 88250@gmail。com,http://博客。csdn。net/dl 8850
* @ 1 .0 .0版,2008年5月17日
*/
publicclassnbconffile
/**
*配置文件位置(完整路径、全名)
*/
privateStringlocation(专用字符串位置):
/**
*配置文件-组态档
*/
私有文件11;
/**
*默认构造函数。
*/
pubnbconffile()
初始化位置();
}
/**
* addaneownetbeansstartupparameter参数。
* @ parampartlhenwpparametertobeaded
*/
publication dntbansdefaultoptions(string para)>
list string options=getnetbeansdefauloptions();
备选案文。添加(至);
持久性选项选项:
}
/**
* editanetbeansstartupparameter参数。
* @paramindexparameterindex
* @ paramnewvaluethenewparametervalue
*/
pubwidedtnetbeansdefaultoptions(inti index,StringnewValue)>
list string options=getnetbeansdefauloptions();
if(index=options.size()))
返回;
}
选项. set(索引,新值):
持久性选项选项:
}
/**
* removeanetbeansstartupparameter参数。
* @ paramindexparamindexparameterbetodeleted
*/
publicmovenetbeansdefaulteoptions(inti index)>
list string options=getnetbeansdefauloptions();
if(index=options.size()))
返回;
}
options.remove(索引):
持久性选项选项:
}
/**
*备份配置文件名为“netbeans”的备份。糖膏剂“备份”,以及
* inthesamepathwithoriginal .
*/
publivoidbackconffile()& gt;
InputStreaminFile=null
OutputStreamoutFile=null
尝试{
inFile=newfile inputstream(位置);
outFile=newFileOutputStream(location).备份);
org。openide。文件系统。文件实用程序。copy(inFile,outFile);
}catch(IOExceptionex){
例外情况。printstacktrace(ex);
}最后{
尝试{
infile。close();
文件输出。close();
}catch(IOExceptionex){
例外情况。printstacktrace(ex);
}
}
}
/**
*Gettheconfigurationbackupfile .
* @返回名为“netbeans”的文件。糖膏剂备份
*/
publicFilegetBackupFile(){
Fileret=newFile(位置.备份);
if(ret.exists()){
返回ret
}否则{
thrownewRuntimeException( netbeans。糖膏剂“备份存在!”);
}
}
/**
*获取配置文件.
*@return{@link#self}
*/
publicFilegetFile(){
self=newFile(位置);
if(self.exists()){
回归自我
}否则{
thrownewRuntimeException( netbeans。“信仰主义者!”);
}
}
/**
*获取配置文件位置.
*@return{@link#location}
*/
publicStringgetLocation(){
返回位置;
}
/**
* getallvaluesdescripted netbeans _ default _ options ,文件netbeans.conf .
* @ returnifnetbeans _ default _ options=-J-client-J-Xss16m-J-xms 128m-J-XX:PermSize=256m b-font size 10/b . ,
*返回如下列表:{ -J-client ,-J-Xss16m ,-J-Xms128m ,-J-XX:PermSize=256m ,b - fontsize10 /b.}
*/
公共列表字符串getNetBeansDefaultOptions(){
string[]allOptions=get parameters().getProperty(
netbeans _ default _ options’).拆分(/s );
int last=所有选项。长度-1;
//removethefistdoublequotation
allOptions[0]=allOptions[0].substring(1,allOptions[0].length());
//removethelastdoublequotation
allOptions[last]=
allOptions[last].子串(0,
allOptions[last].长度()-1);
list String ret=new ArrayList String();
for(inti=0;我。允许选项。长度;i ){
stringitem=所有选项[I];
//确认开始参数的开始
if(item.length()=2){
字符串开头=项目。子串(0,2);
如果(开始。等于(-J ){
//JVMParameters
ret。添加(项目);
} else if(开始。等于(-){
//IDEParameters
如果(项。以(-LAF ){
//-la fui _ class _ name:usegavenclassheide的外观.
ret。add(item allOptions[I 1]);
} else if(项。以(-font size ){
//-font size size:usegivensizeinpointsasbacifcontsize for heideuserinterface .
ret。add(item allOptions[I 1]);
}
}否则{
//托道瑟的条件
}
}
}
返回ret
}
/**
*GetJDKHOMEbyNetBeansusing .
* @ returntheJDKHOMEpath,例如/usr/lib/jvm/java-6-sun/
*/
publicstringgetnetbeans sjdkhome(){
Stringret=getParameters().getProperty( netbeans _ JDK主页);
//removethedouble报价单
ret=ret.substring(1,ret。长度()-1);
返回ret
}
/**
* getallstartupparametersin文件" netbeans。conf .每个参数像这样:
* p
*-J-Xss16m
*-J-XX:PermSize=256m
*-J-x验证:无
*-lafjavax。挥棒。普拉夫。金属。金属纤维
* -字体大小10
* /p
* @返回
*/
publicPropertiesgetParameters(){
properties paras=new properties();
缓冲读取器nb _ conf reader=null
尝试{
nb _ confReader=newBufferedReader(new filereader(getFile()));
StringaLine=null
while((aLine=nb _ confreader。readline())!=null){
if(aLine==null aLine。等于(“”) 直线。charat(0)== # ){
继续;
}
Stringkey=aLine.substring(0,aLine。(“=”)的索引;
字符串值=aline。子串(aline。(=)1的索引,
艾琳。length());
段落setProperty(键,值);
}
}catch(IOExceptionex){
例外情况。printstacktrace(ex);
thrownewRuntimeException( netbeans。confreaderror!);
}
returnparas段落
}
/**
*SetNetBEansJDKHomepath .
* p
*注意:指定了不带双引号得khomepathisfullpath .
*,比如中心/usr/lib/JVM/Java-6-sun//中心
* /p
*@paramjdkHomeJDKHomepath
*/
publicvidsetnetbeans JDK主页(字符串JDK主页){
properties paras=get参数();
参数。设置属性( netbeans _ JDK主页, JDK主页 );
设定参数(段落);
}
/**
*持久化选项.
* @ parampoptionsoptionslist
*/
privatevoidpersistNBOptions(列表字符串选项){
properties paras=get参数();
stringoptionstr=
for(Stringoption:options){
options str=option
}
选项字符串=选项字符串。trim();
参数。设置属性( netbeans _ default _ options , options str );
设定参数(段落);
}
/**
* setallstartupparametersin文件" netbeans。conf .
* @ paramprastheparametersstorebya代码属性代码
*/
privatevidsetparameters(属性段落){
BufferedWriterwriter
尝试{
writer=newBufferedWriter(新文件编写器(位置));
作家。write(# # # properties writtenbycustomstartupmodule));
作家。newline();
枚举?钥匙=段落。属性名();
while(keys.hasMoreElements()){
Stringkey=keys.nextElement().toString();
字符串值=段落。getproperty(key);
writer.write(键“=”值);
作家。newline();
}
作家。close();
}catch(IOExceptionex){
例外情况。printstacktrace(ex);
}
}
/**
* initializenetbeans。会议地点.
*/
privatevoidinitLocation(){
位置=系统。getproperty( netbeans。家’);
//移除"/平台8 "
location=location.substring(0,location。lastindexof(文件。分隔符));
//添加"/etc/netbeans.conf "
位置=文件。分隔符 etc 文件。分隔符”netbeans。conf ;
//TODOOSsettings
//系统。出去。println(org。打开ide。util。公用事业。是UNIX());
//系统。出去。println(org。打开ide。util。公用事业。是windows());
}
}
4.开始插件咯~
好了,上面贴了很多代码,貌似和开发工具的插件开发没什么联系。现在我们正式开始介绍插件开发(模块开发)!
a.添加需要的依赖库,也就是平台的一些API:
b.建立选项面板类型的文件:
c.打开面板,设计界面:
d.主要事件处理代码:
privatewidconfirmjdkhomebtnactionperformed(Java。awt。事件。actioneventevt){
StringjdkHomeInput=jdkhometextfield。gettext();
nbconffile。setnetbeansjdkhome(jdkHomeInput);
}
privatevoidaddParasBtnActionPerformed(Java。awt。事件。actioneventevt){
String新值=(String)this。TBL的论点。getcelleditor(
这个。argumentstbl。geteditingrow(),0).getCellEditorValue();
向量字符串newRow=新向量字符串();
纽罗。添加(新值);
这个。argstblmodel。addrow(新行);
}
privatevoidremoveParasBtnActionPerformed(Java。awt。事件。actioneventevt){
intselectedRow=this。TBL的论点。getselectedrow();
这个。argstblmodel。移除行(选定的行);
NBC onffile。removenetbeansdefaultoptions(选定行);
}
privateoviargumentstblpropertychange(Java。豆子。propertychangeeventevt){
intselectedRow=this。TBL的论点。getselectedrow();
if(selected row=0 selected row=NBC onfile。getnetbeansdefaultoptions().
size()){
//编辑参数
字符串新值=this。argstblmodel。getvalueat(选定的行,
0).toString();
NBC onffile。editnetbeansdefaultoptions(选定行,新值);
} else if(selected row=0 this。argstblmodel!=空
这个。argstblmodel。getvalueat(所选行,0)!=null){
//addparameter
字符串新值=this。argstblmodel。getvalueat(选定的行,
0).toString();
NBC onffile。addnetbeansdefaultoptions(新值);
}
}
5.测试
直接运行工程就可以了:
较开发工具与黯然失色的插件开发比较,我觉得铌的要方便一些。特别是铌平台提供的蜜蜂比较"人性化"。而且铌在开发时要稳定一点。不过,随着JDK7里正式内置了OSGi,情况可能会有所改变。让我们拭目以待!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。