Netbeans学习总结

156 篇文章 2 订阅

Java GUI开发工具Netbeans介绍



Netbeans是一个纯Java的程序,支持GUI编程,在GUI编程过程中向导产生一个initComponents函数,类似


于JBuilder向导产生的jbInit函数。


一、下载Netbeans后直接解压缩即可运行


Netbeans是一个纯Java的程序。Windows、OS2、OpenVMS和Linux版是同一个程序,只不过通过不同的启


动程序启动。这一点很好。纯C++的Java编译器速度比纯Java的快了很多。语法分析和编译部分,可以用


纯C++写出来,比如Visual Age for java。当然C++的标准中缺少跨平台的动态连接库标准,是一个极大


的失策,这是外话,不提。


Netbeans可以使用外部的编译器,比如jdk中的javac。当然javac也是一个慢家伙。通常Netbeans调用


netbeans\bin\fastjavac\目录下的fastjavac来编译。我看到有Windows,Linux,Solaris三种。不知道


OS2和OpenVMS版本的fastjavac哪里去了?


Netbeans支持GUI编程,在GUI编程过程中向导产生一个initComponents函数,类似于JBuilder向导产生


的jbInit函数。


不过需要注意的是initComponents在编辑器中不可修改。这可能是来源于Java语法的一大缺陷。Java语


法中并没有支持GUI design time的语法标签,对于编译器来说,在设计时从Java代码还原到设计窗口技


术上太难。JBuilder允许程序员修改向导产生的jbInit函数,结果是JBuilder的GUIdesign经常出笑话,


比如JBuilder好几个版本都存在的GUI设计时只认识this.setSize不认识this.setBounds的问题。


Netbeans干脆不允许程序员修改initComponents函数,是好是坏还不一定。一般而言,Netbeans对于每


一个可视化的.java文件都会生成一个.form文件。对于Netbeans编译器来说,在设计时从Java代码还原


到设计窗口是通过解析.form文件,这样技术难度下降很多,也不会像JBuilder一样经常出低级笑话。当


然这个问题的彻底解决需要Sun公司好好到Microsoft弦簧?VB的设计课程,只是不知道Microsoft要收多


少学费,哈哈!!


Netbeans的initComponents函数中中文一般来说时经过Unicode编码过。这毫无道理。可能因为设计人员


不懂亚洲字符的一些问题,为了保险起见,干脆编码了事。编码过的汉字在GUI设计窗口仍然是汉字。其


它函数中的汉字不会自动编码。


二、使用向导生成代码


Netbeans支持倒入JBuilder的Project,只不过如果要修改由JBuilder生成的GUI代码,可能性基本为零





Netbeans支持CVS,不支持Sourcesafe。JBuilder8支持Sourcesafe,不过经常出错,慎用!


Netbeans支持java格式的resource文件的多语言编程。不过,我一般将字符串放在.xml文件或数据库中


,所以这一个功能对于我来说没有什么作用。


三、GUI界面设计


Netbeans支持Null Layout和GridBagLayout的任意互相转换。对于很多GUI组件,Netbeans都提供很好的


属性编辑器,比如用Netbeans在Frame上修改JTable的属性就很方便,远比其他工具要强,直逼当年的


Visual J++。JBuilder的多个版本的设计GUI功能都令人失望,问题多多,速度慢慢,比Borland的


CBuilder和Delphi低了无数个等级。不知是不是因为人才流失的关系。


四、设置控件属性


Netbeans的一个特色在于,将属性进行分类,常用的归在一类,比较容易找。我不知道这项功能能不能


定制。因为Netbeans的分类与我所需要的往往相差较多。无论如何,这是一个好的创意。


Netbeans的字体设置找到的字体比JBuilder找到的字体要多很多。我不知道找字体有何技术难度,


JBuilder很多字体都找不到,可能是Java的bug?


Netbeans可以自动添加事件的代码。Java的事件语法极其差劲,手工写比较容易出错。在Netbeans中添


加事件过程如下:


选择一个可视化对象,切换到屏幕右下角的events,双击相应的事件,再按回车。我不知道为什么一定


要按回车,麻烦!


五、Netbeans源代码窗口可以全屏,并且可以做函数自动提示。需要注意的是自动提示过程中输入字符


是大小写敏感,这让人很不舒服。


六、Netbeans支持断点调试,变量监视。不过Microsoft的独家调试技术还是没有加进来。


可能很多人不知道Microsoft的独家调试技术,顺便说一下。


1、在debug的断点调试下,可以一边修改代码一边继续调试,不用中断调试重新编译。这项技术可以省


很多时间。


2、在debug的断点调试下,可以任意改变执行点,比如跳过几行代码继续执行,跳回几行代码继续执行


。当知道大概在某一个代码段内有问题,需要反复调试时,这一技术也可以省很多时间。


3、条件中断。比如我们让repeatCount值改变时进入调试中断,但是repeatCount在多个函数中都有修改


。这一个技术也很有用。


我不知道前面两条技术的难度,好像第三个比较容易实现,不知道为什么其他编译器都没有做到。


七、其他


以下是Netbeans应用了新的LookAndFeel后的样子。字体我没有挑好,不过还算可以吧!
========

NetBeans使用教程入门篇



NetBeans是新近流行的一款堪与Eclipse媲美的IDE,有Sun的支持。下面是NetBeans使用教程入门篇。


一.创建项目
下面打开NetBeans,然后点击菜单“文件”->“新建项目”,打开“新建项目”对话框:


新建项目


请在“类别”中选择“常规”,再从“项目”中选择“Java应用程序”,然后点击“下一步”,进入“


新建Java应用程序”对话框:


 新建Java应用程序


在这个对话框中需要设置项目的名称以及项目所在目录,我为自己的项目起名为JUnitTest,“项目位置


”为G:\YPJCCK\JUnit\NetBeans,此外,请将“创建主类”前的对号去掉。项目创建好后,已经自带了


JUnit 3.8.1。
二.编写用于测试的JavaBean
用于测试的JavaBean很简单,名为Book,只有id和name两个属性,这两个属性将分别用于两个用例当中


。下面开始编写该JavaBean。
请点击“文件”->“新建文件”,打开“新建文件”对话框:


新建文件


确保“项目”选择的是JUnitTest,然后在“类别”中选中Java类,在“文件类型”中选中Java类,点击


“下一个”,进入下一窗口:


文件类型


设置类名为Book,包为net.zheng.junit.test,设置完成后点击“完成”,修改代码如下:


package net.zheng.junit.test;
public class Book {
private String id = null;
private String name = null;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
 
至此,用于测试的JavaBean编写完成。
三.编写测试用例
这里只用了一个类进行测试,名为BookTest,该类继承自junit.framework.TestCase类。BookTest类包


含两个用例,分别对应该类的testId和testName方法,即每个方法实现了一个测试用例。注意,在JUnit 


中,junit.framework.TestCase的子类中每个用来实现测试用例的方法都必须以testXXX的格式来命名,


这些方法在运行时会被执行。此外,BookTest还包括setUp和tearDown这两个方法,前者在每个测试方法


开始之前执行,多用来做初始化;后者在每个测试方法完成之后执行,多用来清理资源。下面开始编写


BookTest。
请点击“文件”->“新建文件”,打开“新建文件”对话框:
新建文件


确保“项目”选择的是JUnitTest,然后在“类别”中选中JUnit类,在“文件类型”中选中现有类的测


试,点击“下一个”,进入下一窗口:


新建文件


选择要测试的类,点击“完成”,修改代码如下:


package net.zheng.junit.test;
import junit.framework.TestCase;
import junit.framework.Assert;
public class BookTest extends TestCase {
Book book = null;
//建议为测试类创建构造
public BookTest(String name) {
super(name);
}
protected void setUp() throws Exception {
//调用超类的setUp(),以确保测试环境被初始化
super.setUp();
System.out.println("测试开始!");
book = new Book();
System.out.println("book对象被初始化!");
}
protected void tearDown() throws Exception {
System.out.println("book对象将被清理!");
book = null;
System.out.println("测试结束!");
//调用超类的tearDown(),以确保测试环境被清理
super.tearDown();
}
public void testId() {
book.setId("001"); //设置id属性的值为001
//使用Assert查看id属性的值是否为001
Assert.assertEquals("001", book.getId());
System.out.println("id属性被测试!");
}
public void testName() {
book.setName("ASP"); //设置name属性的值为ASP
//使用Assert查看name属性的值是否为JSP,这是个必然出现错误的测试
Assert.assertEquals("JSP", book.getName());
System.out.println("name属性被测试!");
}
}


这里setUp和tearDown方法没什么好说的,就是执行了对book对象的初始化和清理,不过testId和


testName需要说明一下。前者是在对book的id属性进行测试,首先赋值为”001”,然后使用Assert的


assertEquals方法查看id属性中存放的值是否是期待的值,由于我的期待值也是”001”,所以执行后这


个用例应该是成功的;后者则是对book的name属性进行测试,也是首先赋值为”ASP”,然后使用 


Assert的assertEquals方法查看其值是否是期待的,由于我特意将期待值设定为根本不可能的”JSP”,


因此这个用例执行后会出现一个错误。但请注意,由于我是特意要让测试出现错误,所以将期待值设定


成了不可能的值,如果你是测试人员,请千万不要这么做,否则如果别的地方导致了错误,很容易给自


己造成不必要的麻烦。
下面简单介绍一下上边用到的静态类junit.framework.Assert。该类主要包含8个方法:
1.assertEquals()方法,用来查看对象中存的值是否是期待的值,与字符串比较中使用的equals()方法


类似;
2.assertFalse()和assertTrue()方法,用来查看变量是是否为false或true,如果assertFalse()查看


的变量的值是false则测试成功,如果是true则失败,assertTrue()与之相反;
3.assertSame()和assertNotSame()方法,用来比较两个对象的引用是否相等和不相等,类似于通


过“==”和“!=”比较两个对象;
4.assertNull()和assertNotNull()方法,用来查看对象是否为空和不为空;
5.fail ()方法,意为失败,用来抛出错误。我个人认为有两个用途:首先是在测试驱动开发中,由于


测试用例都是在被测试的类之前编写,而写成时又不清楚其正确与否,此时就可以使用fail方法抛出错


误进行模拟;其次是抛出意外的错误,比如要测试的内容是从数据库中读取的数据是否正确,而导致错


误的原因却是数据库连接失败。
四.运行BookTest


编写好BookTest后,就可以运行了。请在“项目”栏中选中BookTest,点击鼠标右键,选择“运行文件


”,测试信息会从“输出”窗口输出:


运行文件


五.测试套件


当有多个测试类需要一次性进行测试时,可以使用测试套件来完成这项工作。
在NetBeans中,点击“文件”->“新建文件”,打开“新建文件”对话框:


新建文件


确保“项目”选择的是JUnitTest,然后在“类别”中选中JUnit类,在“文件类型”中选中测试套件,


点击“下一个”,进入下一窗口:


文件类型


修改“类名”为AllTests,点击“完成”,然后修改代码如下:


package net.zheng.junit.test;
import junit.framework.*;
public class AllTests extends TestCase {
public AllTests(String testName) {
super(testName);
}
public static Test suite() {
TestSuite ts= new TestSuite("AllTests");
ts.addTestSuite(BookTest.class);
return ts;
}
}


其中TestSuite是用来组织测试类的,通过其addTestSuite()方法将测试类添加到ts对象中,凡是添加到


ts中的测试类都将在运行文件时被执行。此外,您也可以在定义ts对象时利用其构造函数将测试类添加


给ts对象,例如:
TestSuite ts = new TestSuite(BookTest.class);
这并不会影响到后续使用addTestSuite()方法。测试套件的运行方法与之前一样。
此外,JUnit自身也提供了运行测试的环境,但需要在NetBeans中做一些改动,所以就不作详细介绍了,


这里只将代码给出:
 package net.zheng.junit.test;
import junit.framework.*;
public class Test {
public static void main(String[] args) {
//使用TestSuite组装测试类
TestSuite ts = new TestSuite();
ts.addTestSuite(TestBook.class);
//textui,命令行方式
junit.textui.TestRunner.run(ts);
//swingui,Swing方式
//junit.swingui.TestRunner.run(ts.getClass());
//awtui,AWT方式
//junit.awtui.TestRunner.run(ts.getClass());
}
}


 
六.小结
其实JUnit上手很容易,远比想象的要简单的多,但我觉得如何编写测试类是很需要经验的,因为许多时


候,测试一个用例,但涉及到可能不止一个类;而有些时候,一个类可能是做为工具使用,里边涉及很


多内容,那么测试时是否还是只编写一个测试类呢?关于这个话题,我想应该是仁者见仁、智者见智的


,其实这才是测试的难题所在。
========

netbeans跟eclipse的细节对比



现在Java流行的IDE不外乎eclipse、netbeans、IntelliJ三种。对于我来说,eclipse接触的最早,也用


的最多,现在是我的主力开发平台;netbeans,几乎跟eclipse同时接触,但都是在断断续续的使用(也


可以说是试用),一直没有扶正(后面说原因);IntelliJ据说很不错,一直没深入的接触过,有机会


得试试。


回到正题,说说netbeans,从上学的时候就一直在用,使用的过程基本上就是:新版本出现->尝试使


用->失望->卸载,如此往复,以至于现在netbeans只能在家里用用。现在各个IDE,基本上都朝着大而全


的方向发展,支持各种框架、工具、应用服务器,而我在使用一款IDE时,最看中的是细节。这么多年来


,netbeans一直未能超越eclipse(至少我是这么认为),我感觉,就是输在细节上。下面就列一下我在


开发过程中遇到的令人不爽的netbeanns细节问题:




1.不能向外拷贝文件。在项目视图中选中一个文件,点ctrl+c,然后到桌面,点ctrl+v,没反应...?


2.没有列编辑。使用过UE的同学都应该知道列编辑的好用之处,eclipse从3.4开始支持列编辑(还不知


道?alt+shift+a,赶紧试试吧);netbeans,sorry,还没有。


3.前进、后退功能太鸡肋。java相对于c/c++的特点就是,编码时涉及的文件超多,编辑或浏览时,得在


各种类文件中来回切换。eclipse会记住此过程中你浏览和编辑的所有位置,可以通过前进、后退按钮进


行导航。netbeans,sorry,只能记住编辑位置。


4.只能以一种视图打开文件。以html文件为例,在eclipse中,可以以普通文件、html设计器、内置浏览


器等形式打开。netbeans,不说了。


5.代码格式化功能太弱。这个主要有两点:粘帖进来的代码不能自动调整缩进;代码if(true) {},将光


标放在花括号中间,点击回车,不爽的地方就出现了。


...


还有很多,就不一一列举了。


算是牢骚吧,over。
========

NetBeans与eclipse谁好用



如题。
到底是 SUN公司的NetBeans好用呢。
还是 IBM公司的 eclipse 好用。


其实各有各的好,我一般是结合使用,前期我使用eclipse+myeclipse插件,很容易实现在项目中加入一


些框架并生成配置文件,比如Spring,Hibernate,Struts等框架,当然在netbeans中也可以一步实现在


项目里加入Struts及其他一些框架,但是netbeans加入Spring,Hibernate就没那么方便了,必须要自己


手动配置以及编写配置文件。所以我一般是先用eclipse+myeclipse做一个前期配置。然后再用netbeans


做后期的编码工作,其中值得一提的就是从eclipse工程到netbeans的转化,需要更新一下netbens的插


件,以netbeans5.5为例,点击工具(Tools)->更新中心(Update Center)->下一步(Next)然后在列


出的可用更新模块中选择Eclipse Project Importer 然后添加(Add)之后安装就可以了。
安装好后 在netbeans中选择文件->导入工程->Eclipse Project 就可以了,这样Eclipse Project 就变


成了netbeans的工程了。
我在后期编码的时候要选择netbeans,是因为netbeans提供了超级强大的编码机制,写代码特别快,下


面说的很是很多人netbenas特别地方,这也是我喜欢它的原因,在netbeans中 举个例子来说:你如果输


入psvm然后输入空格会自动生成如下代码
public static void main(String[] args) {
        
    }
类似的机制有很多,你也可以自定义一些简写模板,你如想要知道其他的话可以通过工具—>选项->编辑


器->代码模板来查看。不过我有一点要说明的是在输入psvm+空格的时候必须一次性输对,意思就是说在


输入psvm的时候不能按删除键,不然是看不到效果的。
还有一点就是你比如你在程序里写了一个变量名叫jasyptstudy,这时你输入j然后按ctrl+K时就会自动


补齐到jasyptstudy,如果你没有补齐到jasyptstudy,而是到以j开头的其他字符,你可以多按几次


ctrl+K一直到满意为止。这样一来的话编码就变得很快很快了,非常有效的减少了敲击键盘的次数。
========
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值