Netbeans学习总结
生活随笔
收集整理的這篇文章主要介紹了
Netbeans学习总结
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java GUI開發(fā)工具Netbeans介紹
Netbeans是一個純Java的程序,支持GUI編程,在GUI編程過程中向?qū)Мa(chǎn)生一個initComponents函數(shù),類似
于JBuilder向?qū)Мa(chǎn)生的jbInit函數(shù)。
一、下載Netbeans后直接解壓縮即可運(yùn)行
Netbeans是一個純Java的程序。Windows、OS2、OpenVMS和Linux版是同一個程序,只不過通過不同的啟
動程序啟動。這一點(diǎn)很好。純C++的Java編譯器速度比純Java的快了很多。語法分析和編譯部分,可以用
純C++寫出來,比如Visual Age for java。當(dāng)然C++的標(biāo)準(zhǔn)中缺少跨平臺的動態(tài)連接庫標(biāo)準(zhǔn),是一個極大
的失策,這是外話,不提。
Netbeans可以使用外部的編譯器,比如jdk中的javac。當(dāng)然javac也是一個慢家伙。通常Netbeans調(diào)用
netbeans\bin\fastjavac\目錄下的fastjavac來編譯。我看到有Windows,Linux,Solaris三種。不知道
OS2和OpenVMS版本的fastjavac哪里去了?
Netbeans支持GUI編程,在GUI編程過程中向?qū)Мa(chǎn)生一個initComponents函數(shù),類似于JBuilder向?qū)Мa(chǎn)生
的jbInit函數(shù)。
不過需要注意的是initComponents在編輯器中不可修改。這可能是來源于Java語法的一大缺陷。Java語
法中并沒有支持GUI design time的語法標(biāo)簽,對于編譯器來說,在設(shè)計(jì)時從Java代碼還原到設(shè)計(jì)窗口技
術(shù)上太難。JBuilder允許程序員修改向?qū)Мa(chǎn)生的jbInit函數(shù),結(jié)果是JBuilder的GUIdesign經(jīng)常出笑話,
比如JBuilder好幾個版本都存在的GUI設(shè)計(jì)時只認(rèn)識this.setSize不認(rèn)識this.setBounds的問題。
Netbeans干脆不允許程序員修改initComponents函數(shù),是好是壞還不一定。一般而言,Netbeans對于每
一個可視化的.java文件都會生成一個.form文件。對于Netbeans編譯器來說,在設(shè)計(jì)時從Java代碼還原
到設(shè)計(jì)窗口是通過解析.form文件,這樣技術(shù)難度下降很多,也不會像JBuilder一樣經(jīng)常出低級笑話。當(dāng)
然這個問題的徹底解決需要Sun公司好好到Microsoft弦簧?VB的設(shè)計(jì)課程,只是不知道Microsoft要收多
少學(xué)費(fèi),哈哈!!
Netbeans的initComponents函數(shù)中中文一般來說時經(jīng)過Unicode編碼過。這毫無道理。可能因?yàn)樵O(shè)計(jì)人員
不懂亞洲字符的一些問題,為了保險(xiǎn)起見,干脆編碼了事。編碼過的漢字在GUI設(shè)計(jì)窗口仍然是漢字。其
它函數(shù)中的漢字不會自動編碼。
二、使用向?qū)纱a
Netbeans支持倒入JBuilder的Project,只不過如果要修改由JBuilder生成的GUI代碼,可能性基本為零
。
Netbeans支持CVS,不支持Sourcesafe。JBuilder8支持Sourcesafe,不過經(jīng)常出錯,慎用!
Netbeans支持java格式的resource文件的多語言編程。不過,我一般將字符串放在.xml文件或數(shù)據(jù)庫中
,所以這一個功能對于我來說沒有什么作用。
三、GUI界面設(shè)計(jì)
Netbeans支持Null Layout和GridBagLayout的任意互相轉(zhuǎn)換。對于很多GUI組件,Netbeans都提供很好的
屬性編輯器,比如用Netbeans在Frame上修改JTable的屬性就很方便,遠(yuǎn)比其他工具要強(qiáng),直逼當(dāng)年的
Visual J++。JBuilder的多個版本的設(shè)計(jì)GUI功能都令人失望,問題多多,速度慢慢,比Borland的
CBuilder和Delphi低了無數(shù)個等級。不知是不是因?yàn)槿瞬帕魇У年P(guān)系。
四、設(shè)置控件屬性
Netbeans的一個特色在于,將屬性進(jìn)行分類,常用的歸在一類,比較容易找。我不知道這項(xiàng)功能能不能
定制。因?yàn)镹etbeans的分類與我所需要的往往相差較多。無論如何,這是一個好的創(chuàng)意。
Netbeans的字體設(shè)置找到的字體比JBuilder找到的字體要多很多。我不知道找字體有何技術(shù)難度,
JBuilder很多字體都找不到,可能是Java的bug?
Netbeans可以自動添加事件的代碼。Java的事件語法極其差勁,手工寫比較容易出錯。在Netbeans中添
加事件過程如下:
選擇一個可視化對象,切換到屏幕右下角的events,雙擊相應(yīng)的事件,再按回車。我不知道為什么一定
要按回車,麻煩!
五、Netbeans源代碼窗口可以全屏,并且可以做函數(shù)自動提示。需要注意的是自動提示過程中輸入字符
是大小寫敏感,這讓人很不舒服。
六、Netbeans支持?jǐn)帱c(diǎn)調(diào)試,變量監(jiān)視。不過Microsoft的獨(dú)家調(diào)試技術(shù)還是沒有加進(jìn)來。
可能很多人不知道Microsoft的獨(dú)家調(diào)試技術(shù),順便說一下。
1、在debug的斷點(diǎn)調(diào)試下,可以一邊修改代碼一邊繼續(xù)調(diào)試,不用中斷調(diào)試重新編譯。這項(xiàng)技術(shù)可以省
很多時間。
2、在debug的斷點(diǎn)調(diào)試下,可以任意改變執(zhí)行點(diǎn),比如跳過幾行代碼繼續(xù)執(zhí)行,跳回幾行代碼繼續(xù)執(zhí)行
。當(dāng)知道大概在某一個代碼段內(nèi)有問題,需要反復(fù)調(diào)試時,這一技術(shù)也可以省很多時間。
3、條件中斷。比如我們讓repeatCount值改變時進(jìn)入調(diào)試中斷,但是repeatCount在多個函數(shù)中都有修改
。這一個技術(shù)也很有用。
我不知道前面兩條技術(shù)的難度,好像第三個比較容易實(shí)現(xiàn),不知道為什么其他編譯器都沒有做到。
七、其他
以下是Netbeans應(yīng)用了新的LookAndFeel后的樣子。字體我沒有挑好,不過還算可以吧!
========
NetBeans使用教程入門篇
NetBeans是新近流行的一款堪與Eclipse媲美的IDE,有Sun的支持。下面是NetBeans使用教程入門篇。
一.創(chuàng)建項(xiàng)目
下面打開NetBeans,然后點(diǎn)擊菜單“文件”->“新建項(xiàng)目”,打開“新建項(xiàng)目”對話框:
新建項(xiàng)目
請?jiān)凇邦悇e”中選擇“常規(guī)”,再從“項(xiàng)目”中選擇“Java應(yīng)用程序”,然后點(diǎn)擊“下一步”,進(jìn)入“
新建Java應(yīng)用程序”對話框:
?新建Java應(yīng)用程序
在這個對話框中需要設(shè)置項(xiàng)目的名稱以及項(xiàng)目所在目錄,我為自己的項(xiàng)目起名為JUnitTest,“項(xiàng)目位置
”為G:\YPJCCK\JUnit\NetBeans,此外,請將“創(chuàng)建主類”前的對號去掉。項(xiàng)目創(chuàng)建好后,已經(jīng)自帶了
JUnit 3.8.1。
二.編寫用于測試的JavaBean
用于測試的JavaBean很簡單,名為Book,只有id和name兩個屬性,這兩個屬性將分別用于兩個用例當(dāng)中
。下面開始編寫該JavaBean。
請點(diǎn)擊“文件”->“新建文件”,打開“新建文件”對話框:
新建文件
確保“項(xiàng)目”選擇的是JUnitTest,然后在“類別”中選中Java類,在“文件類型”中選中Java類,點(diǎn)擊
“下一個”,進(jìn)入下一窗口:
文件類型
設(shè)置類名為Book,包為net.zheng.junit.test,設(shè)置完成后點(diǎn)擊“完成”,修改代碼如下:
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編寫完成。
三.編寫測試用例
這里只用了一個類進(jìn)行測試,名為BookTest,該類繼承自junit.framework.TestCase類。BookTest類包
含兩個用例,分別對應(yīng)該類的testId和testName方法,即每個方法實(shí)現(xiàn)了一個測試用例。注意,在JUnit?
中,junit.framework.TestCase的子類中每個用來實(shí)現(xiàn)測試用例的方法都必須以testXXX的格式來命名,
這些方法在運(yùn)行時會被執(zhí)行。此外,BookTest還包括setUp和tearDown這兩個方法,前者在每個測試方法
開始之前執(zhí)行,多用來做初始化;后者在每個測試方法完成之后執(zhí)行,多用來清理資源。下面開始編寫
BookTest。
請點(diǎn)擊“文件”->“新建文件”,打開“新建文件”對話框:
新建文件
確保“項(xiàng)目”選擇的是JUnitTest,然后在“類別”中選中JUnit類,在“文件類型”中選中現(xiàn)有類的測
試,點(diǎn)擊“下一個”,進(jìn)入下一窗口:
新建文件
選擇要測試的類,點(diǎn)擊“完成”,修改代碼如下:
package net.zheng.junit.test;
import junit.framework.TestCase;
import junit.framework.Assert;
public class BookTest extends TestCase {
Book book = null;
//建議為測試類創(chuàng)建構(gòu)造
public BookTest(String name) {
super(name);
}
protected void setUp() throws Exception {
//調(diào)用超類的setUp(),以確保測試環(huán)境被初始化
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("測試結(jié)束!");
//調(diào)用超類的tearDown(),以確保測試環(huán)境被清理
super.tearDown();
}
public void testId() {
book.setId("001"); //設(shè)置id屬性的值為001
//使用Assert查看id屬性的值是否為001
Assert.assertEquals("001", book.getId());
System.out.println("id屬性被測試!");
}
public void testName() {
book.setName("ASP"); //設(shè)置name屬性的值為ASP
//使用Assert查看name屬性的值是否為JSP,這是個必然出現(xiàn)錯誤的測試
Assert.assertEquals("JSP", book.getName());
System.out.println("name屬性被測試!");
}
}
這里setUp和tearDown方法沒什么好說的,就是執(zhí)行了對book對象的初始化和清理,不過testId和
testName需要說明一下。前者是在對book的id屬性進(jìn)行測試,首先賦值為”001”,然后使用Assert的
assertEquals方法查看id屬性中存放的值是否是期待的值,由于我的期待值也是”001”,所以執(zhí)行后這
個用例應(yīng)該是成功的;后者則是對book的name屬性進(jìn)行測試,也是首先賦值為”ASP”,然后使用?
Assert的assertEquals方法查看其值是否是期待的,由于我特意將期待值設(shè)定為根本不可能的”JSP”,
因此這個用例執(zhí)行后會出現(xiàn)一個錯誤。但請注意,由于我是特意要讓測試出現(xiàn)錯誤,所以將期待值設(shè)定
成了不可能的值,如果你是測試人員,請千萬不要這么做,否則如果別的地方導(dǎo)致了錯誤,很容易給自
己造成不必要的麻煩。
下面簡單介紹一下上邊用到的靜態(tài)類junit.framework.Assert。該類主要包含8個方法:
1.assertEquals()方法,用來查看對象中存的值是否是期待的值,與字符串比較中使用的equals()方法
類似;
2.assertFalse()和assertTrue()方法,用來查看變量是是否為false或true,如果assertFalse()查看
的變量的值是false則測試成功,如果是true則失敗,assertTrue()與之相反;
3.assertSame()和assertNotSame()方法,用來比較兩個對象的引用是否相等和不相等,類似于通
過“==”和“!=”比較兩個對象;
4.assertNull()和assertNotNull()方法,用來查看對象是否為空和不為空;
5.fail ()方法,意為失敗,用來拋出錯誤。我個人認(rèn)為有兩個用途:首先是在測試驅(qū)動開發(fā)中,由于
測試用例都是在被測試的類之前編寫,而寫成時又不清楚其正確與否,此時就可以使用fail方法拋出錯
誤進(jìn)行模擬;其次是拋出意外的錯誤,比如要測試的內(nèi)容是從數(shù)據(jù)庫中讀取的數(shù)據(jù)是否正確,而導(dǎo)致錯
誤的原因卻是數(shù)據(jù)庫連接失敗。
四.運(yùn)行BookTest
編寫好BookTest后,就可以運(yùn)行了。請?jiān)凇绊?xiàng)目”欄中選中BookTest,點(diǎn)擊鼠標(biāo)右鍵,選擇“運(yùn)行文件
”,測試信息會從“輸出”窗口輸出:
運(yùn)行文件
五.測試套件
當(dāng)有多個測試類需要一次性進(jìn)行測試時,可以使用測試套件來完成這項(xiàng)工作。
在NetBeans中,點(diǎn)擊“文件”->“新建文件”,打開“新建文件”對話框:
新建文件
確保“項(xiàng)目”選擇的是JUnitTest,然后在“類別”中選中JUnit類,在“文件類型”中選中測試套件,
點(diǎn)擊“下一個”,進(jìn)入下一窗口:
文件類型
修改“類名”為AllTests,點(diǎn)擊“完成”,然后修改代碼如下:
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中的測試類都將在運(yùn)行文件時被執(zhí)行。此外,您也可以在定義ts對象時利用其構(gòu)造函數(shù)將測試類添加
給ts對象,例如:
TestSuite ts = new TestSuite(BookTest.class);
這并不會影響到后續(xù)使用addTestSuite()方法。測試套件的運(yùn)行方法與之前一樣。
此外,JUnit自身也提供了運(yùn)行測試的環(huán)境,但需要在NetBeans中做一些改動,所以就不作詳細(xì)介紹了,
這里只將代碼給出:
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());
}
}
六.小結(jié)
其實(shí)JUnit上手很容易,遠(yuǎn)比想象的要簡單的多,但我覺得如何編寫測試類是很需要經(jīng)驗(yàn)的,因?yàn)樵S多時
候,測試一個用例,但涉及到可能不止一個類;而有些時候,一個類可能是做為工具使用,里邊涉及很
多內(nèi)容,那么測試時是否還是只編寫一個測試類呢?關(guān)于這個話題,我想應(yīng)該是仁者見仁、智者見智的
,其實(shí)這才是測試的難題所在。
========
netbeans跟eclipse的細(xì)節(jié)對比
現(xiàn)在Java流行的IDE不外乎eclipse、netbeans、IntelliJ三種。對于我來說,eclipse接觸的最早,也用
的最多,現(xiàn)在是我的主力開發(fā)平臺;netbeans,幾乎跟eclipse同時接觸,但都是在斷斷續(xù)續(xù)的使用(也
可以說是試用),一直沒有扶正(后面說原因);IntelliJ據(jù)說很不錯,一直沒深入的接觸過,有機(jī)會
得試試。
回到正題,說說netbeans,從上學(xué)的時候就一直在用,使用的過程基本上就是:新版本出現(xiàn)->嘗試使
用->失望->卸載,如此往復(fù),以至于現(xiàn)在netbeans只能在家里用用。現(xiàn)在各個IDE,基本上都朝著大而全
的方向發(fā)展,支持各種框架、工具、應(yīng)用服務(wù)器,而我在使用一款I(lǐng)DE時,最看中的是細(xì)節(jié)。這么多年來
,netbeans一直未能超越eclipse(至少我是這么認(rèn)為),我感覺,就是輸在細(xì)節(jié)上。下面就列一下我在
開發(fā)過程中遇到的令人不爽的netbeanns細(xì)節(jié)問題:
1.不能向外拷貝文件。在項(xiàng)目視圖中選中一個文件,點(diǎn)ctrl+c,然后到桌面,點(diǎn)ctrl+v,沒反應(yīng)...?
2.沒有列編輯。使用過UE的同學(xué)都應(yīng)該知道列編輯的好用之處,eclipse從3.4開始支持列編輯(還不知
道?alt+shift+a,趕緊試試吧);netbeans,sorry,還沒有。
3.前進(jìn)、后退功能太雞肋。java相對于c/c++的特點(diǎn)就是,編碼時涉及的文件超多,編輯或?yàn)g覽時,得在
各種類文件中來回切換。eclipse會記住此過程中你瀏覽和編輯的所有位置,可以通過前進(jìn)、后退按鈕進(jìn)
行導(dǎo)航。netbeans,sorry,只能記住編輯位置。
4.只能以一種視圖打開文件。以html文件為例,在eclipse中,可以以普通文件、html設(shè)計(jì)器、內(nèi)置瀏覽
器等形式打開。netbeans,不說了。
5.代碼格式化功能太弱。這個主要有兩點(diǎn):粘帖進(jìn)來的代碼不能自動調(diào)整縮進(jìn);代碼if(true) {},將光
標(biāo)放在花括號中間,點(diǎn)擊回車,不爽的地方就出現(xiàn)了。
...
還有很多,就不一一列舉了。
算是牢騷吧,over。
========
NetBeans與eclipse誰好用
如題。
到底是 SUN公司的NetBeans好用呢。
還是 IBM公司的 eclipse 好用。
其實(shí)各有各的好,我一般是結(jié)合使用,前期我使用eclipse+myeclipse插件,很容易實(shí)現(xiàn)在項(xiàng)目中加入一
些框架并生成配置文件,比如Spring,Hibernate,Struts等框架,當(dāng)然在netbeans中也可以一步實(shí)現(xiàn)在
項(xiàng)目里加入Struts及其他一些框架,但是netbeans加入Spring,Hibernate就沒那么方便了,必須要自己
手動配置以及編寫配置文件。所以我一般是先用eclipse+myeclipse做一個前期配置。然后再用netbeans
做后期的編碼工作,其中值得一提的就是從eclipse工程到netbeans的轉(zhuǎn)化,需要更新一下netbens的插
件,以netbeans5.5為例,點(diǎn)擊工具(Tools)->更新中心(Update Center)->下一步(Next)然后在列
出的可用更新模塊中選擇Eclipse Project Importer 然后添加(Add)之后安裝就可以了。
安裝好后 在netbeans中選擇文件->導(dǎo)入工程->Eclipse Project 就可以了,這樣Eclipse Project 就變
成了netbeans的工程了。
我在后期編碼的時候要選擇netbeans,是因?yàn)閚etbeans提供了超級強(qiáng)大的編碼機(jī)制,寫代碼特別快,下
面說的很是很多人netbenas特別地方,這也是我喜歡它的原因,在netbeans中 舉個例子來說:你如果輸
入psvm然后輸入空格會自動生成如下代碼
public static void main(String[] args) {
? ? ? ??
? ? }
類似的機(jī)制有很多,你也可以自定義一些簡寫模板,你如想要知道其他的話可以通過工具—>選項(xiàng)->編輯
器->代碼模板來查看。不過我有一點(diǎn)要說明的是在輸入psvm+空格的時候必須一次性輸對,意思就是說在
輸入psvm的時候不能按刪除鍵,不然是看不到效果的。
還有一點(diǎn)就是你比如你在程序里寫了一個變量名叫jasyptstudy,這時你輸入j然后按ctrl+K時就會自動
補(bǔ)齊到j(luò)asyptstudy,如果你沒有補(bǔ)齊到j(luò)asyptstudy,而是到以j開頭的其他字符,你可以多按幾次
ctrl+K一直到滿意為止。這樣一來的話編碼就變得很快很快了,非常有效的減少了敲擊鍵盤的次數(shù)。
========
總結(jié)
以上是生活随笔為你收集整理的Netbeans学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: weblogic配置文件学习总结
- 下一篇: C++ string源码