netbeans ide怎么用,netbeans ide安装教程

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: