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一直到满意为止。这样一来的话编码就变得很快很快了,非常有效的减少了敲击键盘的次数。
========

Netbeans学习总结相关推荐

  1. 随想录(对比着c学java)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 对于java,有两种论调.一种是鄙视,认为java是个人都能学,完全体现不出程序员的水平.还有一 ...

  2. NetBeans工具学习之道:NetBeans IDE Java 快速入门教程

    欢迎使用 NetBeans IDE! 本教程通过指导您创建一个简单的 "Hello World" Java 控制台应用程序,简要介绍 NetBeans IDE 工作流.学习完本教程 ...

  3. NetBeans的学习资源

    NetBeans的学习资源 1.NetBeans官网学习地址 2.NetBeans IDE Java 快速入门教程 3.NetBeans 平台学习资源 4.NetBeans网络视频教程 [Java面试 ...

  4. NetBeans工具学习之道:NetBeans的(默认)快捷键

    没什么好介绍的,是netbeans的快捷键,比較全面.看到好多坛子里还在问eclipse下的这个快捷键怎么netbeans下没有呢.曾经收集的,如今列在以下: 事实上,在当前安装的netbeans的 ...

  5. 对应oracle生成java对象,Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件...

    [前面的话] 身体慢慢已经快好了,感觉真好,哈哈. 这篇文章要通过Hibernate对数据库进行操作,而Netbeans可以直接通过数据库逆向生成对应的映射文件.基础文章,选择性阅读. [步骤] 1. ...

  6. 学习netbeans电子商务教程第四节使用mysql遇到的操作问题

    电子商务教程https://netbeans.org/kb/docs/javaee/ecommerce/intro.html 主要是自己mysql和教程mysql版本有区别,所以操作都一样,但就是操作 ...

  7. java教学目标_成为Java高手的25个学习目标

    1.需要精通面向对象分析与设计(OOA/OOD).涉及模式(GOF,J2EEDP)以及综合模式,应该了解UML,尤其是 class,object,interaction以及statediagrams. ...

  8. Java 学习笔记 ------第二章 从JDK到IDE

    本章学习目标: 了解与设定PATH 了解与指定CLASSPATH 了解与指定SOURCEPATH 使用package与import管理类别 初步认识JDK与IDE的对应关系 一.第一个Java程序 工 ...

  9. java培训分享:学习java开发的优势是什么

    想要进入到互联网行业的小伙伴,经常比较纠结学那个学科比较好,目前java.web前端.Python等都是非常热门的行业,前景也是比较好的,选择java学科的人比较多,那么学习java开发的优势是什么呢 ...

最新文章

  1. 无监督学习多模态融合!腾讯优图联合厦门大学发布2021十大AI趋势
  2. Swift 注释规范和文档注释
  3. 计算机课程设计红绿灯,武汉大学电气工程学院计算机课程设计1:红绿灯
  4. android banner阴影,仿照锤子科技官网的banner 3d效果
  5. 分享:Android程序员,必备精品网站大汇总
  6. tomcat中添加直接访问的文件
  7. sql server 2008学习4 设计索引的建议
  8. H - Message Bomb Gym - 102798H
  9. 建立简单的VLAN通信
  10. delphi php 加密解密_如何恢复被MaMoCrypt勒索软件加密的数据
  11. AdvStringGrid 复选框、goRowSelect
  12. MATLAB模糊控制算法,驾驶员制动意图识别,Fuzzy模糊控制算法,试验案例+模型+模糊控制器
  13. C虾仔笔记 - ScrollView垂向滚动视图
  14. maven工程读取resource资源文件(踩坑)
  15. 快速区分AR VR MR 全息 3D
  16. rstp要点2:桥优先级为什么是4096的倍数?
  17. 计算机z,出国留学_计算机词汇(R-Z)_沪江英语
  18. Vue实现拖拽穿梭框功能四种方式
  19. obj-y,obj-m 区别
  20. POL8901 LVDS转MIPI DSI 支持旋转图像处理芯片

热门文章

  1. 进程与线程||线程应用:异步调用||多线程与单线程
  2. JS 移动端触屏滑动
  3. 关于HTML下overflow-y:auto无效、清除HTML默认边距、解决去除手机访问网页时的左右多余空白的三个方法汇总
  4. java 接口 实现和继承关系
  5. MySQL 切换数据库、用户卡死:“You can turn off this feature to get a quicker startup with -A“处理方法
  6. Git 技术篇-GitHub免费私有库设置方法实例演示,GitHub私有库时代来临
  7. Python知识点笔记-面向对象进阶篇
  8. 模拟电路技术之基础知识(四)
  9. 对整个矩阵元素进行计算:最大数、最小数、排序
  10. 第五周实践项目6 数制转换(栈)