成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

實例詳解NetBeans和Swing平臺開發

開發 后端
開發豐富的桌面 Java 應用程序歷來是非常辛苦的過程;但是現在NetBeans Swing平臺中有了新的高級 Swing 組件和完整的應用程序框架。了解這個平臺如何讓開發復雜的桌面應用程序變得輕松,以及在構建這個平臺方面的一些教訓。

筆者和很早就開始使用 Java 的大多數人一樣,我最初接觸這項技術是使用(小型)桌面應用程序的時候:它們是我讀博士期間的一些研究素材和一個衛生保健呼叫中心的簡單控制面板。那時是 AWT 時代,能做的事有限。因此我很快就轉到了服務器這邊,這邊的系統似乎更強健、更有發展。事實確實如此。我在這次領域工作了很長時間,并且成為一名 J2EE 架構師。

幾年之后,由于對數字攝影熱情的不斷高漲,我又重新被吸引到桌面。我仍然遇到了許多問題,但是就在我即將放棄的時候,Sun 和開發人員社區推出的 SwingLabs、java.net 和新版本的 NetBeans 把我從困難中解救出來。現在,我正在熱衷于使用一個(可能是)富有前途的開放源碼應用程序 blueMarine,這個程序基于 NetBeans 平臺。

在本文中,我將告訴您有關 blueMarine 的更多故事,并且回顧一些主要的 NetBeans 擴展 API。我將介紹如何使用和自定義這些 API,同時指出我曾經面臨的問題以及解決這些問題的方法。如果您對NetBeans和Swing知之甚少,而您又需要接觸各種各樣的客戶端應用程序,我認為您應該好好閱讀這篇文章。

開始

2001 年前后,由于厭倦了使用 OpenOffice 電子表格,我***次編寫了一些 Java 代碼,用于管理我的照片。我將所有內容導出到 XML 并且利用 XSLT 轉換,確定了我自己的數據庫格式,通過基于 Swing 的一個非常簡單的圖形用戶界面進行管理。

在 2003 年夏天,我在數碼相機世界有了較大的飛躍,購買了 Nikon D100(專業的 SLR)。那個夏天是意大利本世紀最炎熱的夏天,因此我不得不***程度地減少拍照旅行的數量:外出散步也是受罪。我不得不待在家里,盡管托斯卡納鄉村的環境能令人放松,因此,大部分假期我都在學習 NEF 格式。

當時,NEF 是一種“原始數據文件格式”,并且幾乎沒有公開。原始數據文件格式包含的數據直接來自于相機 CCD 傳感器,未經過處理。如果要將它轉換為質量比較好的圖片,還需要對數據進行處理。這通常認為這一過程是舊式潮濕暗室相片成像的數字過程。我從來沒有擁有過自己的潮濕暗室,我為“數字沖洗”照片而入迷,開始為此編寫了一些 Java 代碼。

夏天快結束的時候,我創建了一個簡單的能夠顯示照片的微型導航程序—— blueMarine 就此誕生了。一年之后,這個項目便能夠用編錄設備標記照片,并且能夠在網上發布圖片庫。

但是,讓我非常苦惱的是,我需要多個軟件來執行編輯、打印、編錄、歸檔以及 Web 發布任務。因此我著手開始研究在一個應用程序中實現所有這些工作流程。同時,我認為是時候公開發布 blueMarine 了,因此***個 alpha 版本發布到了 GPL License(后來更改為 Apache 2.0)支持下的 SourceForge 。

另一個推動力是在臺式計算機上挑戰使用 Java 對數字圖像進行處理。對于我來說,Java 在科學圖像處理方面的優勢已經非常明顯;例如, NASA 的工程師們已經成功使用了 JAI,它是一種高級成像的 API。但是,對于普通攝影師來說,桌面處理包含哪些內容呢?自從成為 Java 顧問 10 多年來,證明 Java 在各種各樣的應用程序方面的優勢一直是我追求的目標。

挫折

雖然開始時熱情高漲,但是在 2005 年底,我在這個項目上受到了很大的打擊。性能不是大問題,但是,在使用 plain Swing 開發豐富的 GUI 應用程序時,我遇到了困難。Swing 是一個非常出色的 API,但是當您使用它構建復雜的應用程序時,您會發現仍然需要增加很多功能。

實現這些缺少的部分并不是前言科學,但是這項工作浪費了很多寶貴的時間。再次舉例來說明這個問題,例如構建菜單、以上下文相關的方式啟用操作、為內部窗口定義靈活的、可在工作時??康臋C制等等,并且您將發現自己的大部分時間都花費在編寫通用的 GUI 組件上,而沒有花費在應用程序的核心內容上。

直到最近,才有了幾個處理此類問題的開放源碼庫,但是大部分庫都不太令人滿意,而且也很難集成。還有幾個較早版本的 NetBeans,但是我不滿意它們的性能。也可以選擇 Eclipse 和 SWT,但是我覺得我并沒有真正地仔細研究完全的替代方法和非標準的 API,我采用的學習投資回報低,繼承 Swing的方法比較麻煩。

總的來講,我認真地考慮過放棄 blueMarine – 或許 Java 尚未準備用于桌面開發。

新生

但是,同時出現了兩個事件使這個項目得以保留下來,這兩個事件是,我在 2005 年底參與了 JavaPolis 以及 2006 年初發布了 NetBeans 5.0。

在 JavaPolis,我呼吸到了我幾乎都快忘記的社區空氣(自從我上次參加JavaOne 已經過去了三年)。這重新點燃了我的熱情,Romain Guy 的演示說明了使用 Swing 構建 GUI 的效果如何,,這使我興趣倍增。我開始查看 Romain 的博客,并按照下面的鏈接訪問了其他人的博客,如 Joshua Marinacci 的博客,然后再從那里訪問所有 java.net 和 JavaDesktop 的站點。我發現 Swing 里面有很多新鮮有趣的事;像 SwingLabs 里質量優良的 Swing組件和出眾的演示程序 – 很多材料我都能夠使用。但是,我仍然需要一個平臺。

幾周之后,推出了NetBeans 5.0 。這個新的版本看起來似乎最終解決了傳統的平臺問題,因此我決定試一試。我開始分解 blueMarine,只提取成像代碼并對該代碼重新設計以便使用 NetBeans 平臺。幾個月之后,便可以發布了***個 Early Access 版本,我開始使用這個工具管理我自己的照片。同時,從前一個 PPC Apple iBook 切換到新的 Intel MacBook Pro 沒有出現任何問題則強有力地表明了我的選擇是正確的。

目前,我正致力于使新的 blueMarine 更穩定、更便于使用。獲得了新的 early access 版本,并且我正在進行所需的質量測試(整個新設計明顯破壞了以前版本的一些穩定性;這就是付出的代價)。

NetBeans和Swing平臺的功能

由于您已經了解了 blueMarine 的由來,因此我將概述一些NetBeans和Swing帶來的開發優勢、我曾經面臨的問題以及解決這些問題的方法。

***點:是 Swing!

對于我來說,與很多競爭對手(如 Eclipse RCP)相比,NetBeans 平臺基于常規的Swing 是一個巨大的優勢。搜索一下,您會發現 Swing 組件(包括實現動畫和效果比較酷的組件)有更廣闊的選擇余地。

去年 6 月份我非常具體地認識到了這個優勢,當時 Joshua Marinacci 發布了能夠顯示地圖的 Aerith Swing 組件的源代碼,命名為 JXMapViewer(Aerith 是 2006 年 JavaOne 上最熱門的演示程序)。幾周以來,我一直都在等待這個時刻,blueMarine 的其中一個功能是地理標記(將地理位置與每個照片相關聯,以便這些照片可以顯示在地圖上)。將 JXMapViewer 集成到 blueMarine 中只需要幾個小時;

模塊系統

當然,NetBeans 平臺應用程序自然分為幾個模塊,實際上,它是一組綁定在一起的模塊。每個模塊都有一個名稱、一組版本標記及其自己的類路徑以及一個聲明的依賴關系的列表。開 發人員可以控制哪些公共類的子集向其他模塊公開,其他模塊可以看到哪些公共類的子集,平臺可以在模塊之間施加依賴關系(例如,如果所需的模塊都不存在或者 太舊,則阻止模塊安裝)。

此外,通過發布新的模塊(放在 nbm 文件中)可以在以后擴展應用程序,用戶可以建立他們自己的“更新中心”,以便從 Internet 下載更新??梢詫Ω鱾€模塊進行數字簽名,系統會自動彈出他們的許可證以便進行批準(如果需要的話)。

BueMarine 項目充分利用這個組織。該應用程序的核心 API 由實現工作空間管理器、照片、縮略圖管理、簡單縮略圖和照片查看器的相對比較小的模塊集進行定義。更多的高級功能(如編錄、圖庫管理器和地理標記功能,包括地圖查看器)可以在單獨并且幾乎不相關的模塊中實現,這些模塊就作為核心 API 的“客戶端”。

DataObject、Node 和 ExplorerManager

ExplorerManager、Node 和 DataObject 可能是 NetBeans 中最有用的 API。使用 DataObject,您可以實現特定于應用程序的實體,這些實體是映射到磁盤上的文件中。例如,blueMarine 的基本實體為 PhotoDataObject,它代表數據庫中的照片。

而 DataObject 包含實體的所有狀態和行為,為了進行可視化可以將 Node 與DataObject綁定。還可以采用很多種不同的方式(如集合或圖形)將實體聚合在一起。NetBeans 平臺提供 GUI 組件,如表和列表,這些組件可以將一組 Node 對象用作其模型;最常見的組件是 BeanTreeView、ContextTreeView 和 ListView。***,ExplorerManager 控制選擇和樹導航。

是的,這只不過是一個復雜的 MVC 實現,而且這個實現中已經為您編寫了很多樣板文件代碼。例如,平臺 API 考慮類似于拖放支持(以及拖放操作過程中類似于可視提示等詳細的細節信息)、剪切粘貼操作和上下文菜單的事情。

【編輯推薦】

  1. 開源NetBeans 5.5集成開發環境(IDE)正式推出
  2. 新版NetBeans讓PHP開發更輕松
  3. NetBeans 6.0預覽版發布 Sun再引驚呼
  4. 使用NetBeans和Eclipse開發PHP應用程序(1)
  5. 八大技術牛人點評NetBeans 6.5
責任編輯:張燕妮 來源: 百度空間
相關推薦

2009-07-17 12:44:01

NetBeans開發S

2009-06-10 14:53:25

netbeans st實例

2009-06-11 09:19:38

netbeans實例J2ME游戲

2011-05-24 10:30:31

PythonNetBeans ID

2009-07-09 17:33:39

2009-05-27 14:31:53

NetBeansEclipsPHP

2009-04-02 15:58:12

AndroidEclipseSqlite

2011-09-08 13:11:07

Android Wid實例

2011-04-12 08:40:23

IMFAndroid

2009-03-16 15:00:16

阿里軟件旺旺軟件平臺SaaS

2012-04-06 11:19:11

JavaGriffon

2012-02-16 09:11:34

Swing

2009-07-17 14:57:41

SwingWorkerSwing程序

2009-07-10 12:30:12

Swing組件

2009-07-10 10:19:57

JFormattedTSwing

2009-06-11 10:37:58

netbeans spMVC基礎

2009-06-11 10:43:18

Netbeans插件

2009-07-09 11:55:17

Swing模型過濾

2011-07-28 10:11:54

iPhone開發 備忘

2010-06-25 09:26:29

NetBeansNetBeans 6.
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产剧情一区 | av免费观看在线 | 欧美亚洲另类在线 | 精品亚洲一区二区 | 日韩免费高清视频 | 欧美激情在线播放 | 91亚洲精选| 福利视频网址 | a黄毛片 | 亚洲天堂中文字幕 | 国产精品毛片一区二区在线看 | 国产欧美二区 | 中文亚洲视频 | 99精品视频免费观看 | 国产一级电影在线 | www.色午夜.com| 国产三区视频在线观看 | 日韩av在线一区二区 | 男女视频在线看 | 欧美一区二区三区在线看 | 最新日韩在线视频 | 天堂网av在线 | 欧美亚洲另类在线 | 国产在线观看一区二区三区 | 日韩欧美网 | www亚洲精品 | 国产精品欧美一区喷水 | 欧美中文字幕一区二区三区亚洲 | 欧美国产免费 | 无码一区二区三区视频 | 成年免费大片黄在线观看岛国 | 日本a在线 | 日本精品视频 | 精品免费视频 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 久久久噜噜噜www成人网 | 免费影视在线观看 | 国产欧美一区二区三区免费 | 欧美四虎 | 精品久久久久久久人人人人传媒 | 欧美日韩精品专区 |