構建 Java 桌面數據庫應用程序

導讀:


構建 Java 桌面數據庫應用程序


本教程展示瞭如何創建桌面Java應用程序,通過該程序您可以訪問和更新數據庫。本文利用了NetBeans IDE 6.0對以下技術的支持:


l Java Persistence API,此技術可幫助您使用Java代碼與數據庫交互。


l Beans Binding (JSR-295),此技術爲不同的JavaBeans組件獲取適當的值(這些值是彼此同步的)提供了一種方法。例如,可利用beans綁定來使JTable可視化組件中單元的值與實體類中字段的值保持同步。 (這些實體類依次代表數據庫表中的列)


l Swing Application Framework (JSR-296),此技術爲快速創建桌面應用程序提供了一些有用的構造塊。


我們將通過一個定製的組件來創建一個CRUD(創建,讀取,更新,刪除)數據庫應用程序,該組件用於使數據可視化(汽車設計預覽)。


本教程旨在利用NetBeans IDE 6.0 Preview (Milestone 9)版本,不適用於以前的milestone 版本。同樣,本文的準確性可能因後續版本的變化而受到影響。本文很大程度上是基於此視頻演示,而該演示則是基於早期開發的版本。.截至演示完成時,部分用戶界面已經發生了變化,因而本文的內容和演示視頻的內容可能有所不同。


預計持續時間:45分鐘


前提條件


本文假定您具備如下技術的基礎知識或編程經驗:


l Java編程


l NetBeans IDE


所需軟件


本文需要您在計算機上安裝如下軟件:


l NetBeans IDE 6.0 Preview (Milestone 9) (下載).


l Java Standard Development Kit (JDK) version 5.0 or 6.0 (下載)


l Java DB database server (包含Java DB和JDK 6)


l SQL, 位於


http://usersguide.netbeans.org/files/documents/40/1423/car.sql.


l CarPreview 項目,位於http://usersguide.netbeans.org/files/documents/40/1433/CarPreview.zip


創建數據庫


在使用IDE創建桌面CRUD(創建,讀取,更新,刪除)應用程序之前,需將IDE連接到應用程序將要調用的數據庫。預先建立此連接有助於利用IDE自動將數據庫綁定到應用程序的功能。


在本文中,由於從IDE中啓動和停止JavaDB數據庫服務器存在一個方便的接口,我們提供了Java DB數據庫的使用說明。當然,採用不同的數據庫服務器也不會很複雜。


首先請檢查Java DB是否已在IDE中註冊。多數情況下Java DB會在IDE中註冊,例如Sun Java System Application Server在IDE中註冊或是運行在JDK 6環境下。


判斷Java DB是否已在IDE中註冊:


l 打開 Tools 菜單,查找 Java DB Database 菜單項。


如果沒有發現 Java DB 菜單項,需要在 IDE 中手動註冊 Java DB。


在 IDE 中手動註冊 Java DB:


在系統中創建一個存放數據庫的文件夾


選擇 Tools > Options。


在 Options 窗口中,單擊 Advanced Options 按鈕。


在 Advanced Options 窗口中,展開 IDE Configuration > Server 和 External Tools Settings 節點。然後選擇 Java DB Database 節點。


在 Advanced Options 窗口的右面板上單擊 Java DB Location 項的省略號(…)按鈕,並指定到數據庫服務器的路徑(例如:C:/javadb/db)。


在 Database Location 屬性中鍵入本環節步驟1中創建的文件夾的路徑。


單擊 Close。


啓動服務器並創建數據庫


一旦Java DB在IDE中註冊,在主菜單 Tools 項下便出現 Java DB Database 菜單項。此菜單可使啓動、停止和創建新的數據庫變得容易。


啓動數據庫服務器:


l 選擇 Tools > Java DB Database > Start Java DB Server。


如果數據庫的位置還未指定,將出現 Set Database Location 對話框。爲數據庫服務器指定一個位置以便存放數據庫。如果願意可以創建一個新的文件夾。


一旦服務器啓動,即在 Output 窗口中出現 Java DB Database Process 標籤,顯示類似如下的消息:


Apache Derby Network Server - 10.2.1.7 - (453926) started and


ready to accept connections on port 1527 at 2007-04-27 11:32:45.406 GMT


創建數據庫:


選擇 Tools > Java DB Database > Create Java DB Database。將打開 Create Java DB Database 對話框。


在 Database Name 文本字段鍵入 car_database,並將 User Name 和 Password 設置爲 nbuser。


單擊 OK。


連接到數據庫


到此爲止,我們已經成功地啓動了數據庫服務器並創建了數據庫。但是,必須先連接到該數據庫才能在IDE中調用該數據庫。要連接到 car_database 數據庫:


切換到 Runtime 窗口(Ctrl+5)並展開 Databases 節點,看到新建的數據庫。


右鍵單擊數據庫連接節點(jdbc:derby://localhost:1527/car_database[nbuser on NBUSER])並選擇 Connect。


連接節點圖標將呈現整個(),標誌連接成功。


右鍵單擊連接節點的 Tables 子節點,並選擇 Execute Command。


複製 car.sql 文件內容並粘貼到 Source Editor 的 SQL Command 1 標籤中。


這便是將汽車數據填充到數據庫時使用的 SQL 腳本。


單擊 Source Editor 工具欄中的 Run SQL 按鈕( )來運行該腳本。i


創建應用程序


選擇 Choose Project > New Project。


在嚮導的第一面板上展開 General 類別,選擇 Java Desktop Application 平臺。單擊 Next。


Java Desktop Application 平臺提供了可視化應用程序的很多基本要素,包括基本的菜單項和命令。


在嚮導的 Name 和 Location 頁,進行如下操作:


在 Project Name 字段鍵入 CarsApp。這個字段的值設定了 Projects 窗口中項目的顯示名稱。


編輯 Project Location 字段,爲項目的元數據變更(可選)存放位置。


在 Choose Application 的 shell 字段選擇 Database Application。


單擊 Next。


在嚮導的 Master Table 頁爲 CAR 數據庫選擇數據庫連接。數據庫列表應看到如下內容:


jdbc:derby://localhost:1527/cars[nbuser on NBUSER]


輸入數據庫密碼(nbuser)並選擇 Remember Password During This Session 複選框。


在通向數據庫的連接建立後,Database Table 字段應顯示 CAR,Columns to Include 列表應包含 CAR 數據庫的 10 個列的名稱。就目前來說,我們僅需在應用程序中使用其中的 5 個。


選擇底下的 5 個列名(從 SUN_ROOF 開始到 MODERNNESS 結束),並單擊 <按鈕。單擊 Next。


在 Detail Options 面板中單擊 Finish。


隨後嚮導將通過一個表和一個數據庫生成一個基本用戶。


運行生成的應用程序


此時,您已經有了一個運行中的基本應用程序,該程序具備擁有如下功能的圖形用戶界面(GUI):


l 可在 CAR 數據庫的 5 個列中查看和修改值。


l 基本的菜單項。


l 各會話間程序窗口狀態的持久性。關閉應用程序時,窗口的位置和尺寸便被保存。再次運行程序時,窗口會在其關閉的位置處打開。


l 一個可以輕鬆定製的 About 對話框。


l 包含用戶界面中標籤的 .properties 文件。採用 .properties 來保持代碼的邏輯結構與出現在程序用戶界面中的文本分離是一種較好的方法。鑑於其他原因,這樣的分離有助於使程序定位變得容易。


要了解其中一些已內嵌於應用程序中的功能,請遵照如下步驟:


右鍵單擊項目的節點並選擇 Run Project。


數秒後,應用程序啓動並打開一個名爲 Database Application Example 的窗口。窗口中包含了一個表和和數個編輯 CARS 數據庫的控件。


選擇表中的第一條記錄(針對 Acura)。


選擇 Price 字段並將當前值替換爲46999。然後按 Enter 鍵。


表中的值將被更新。


同樣,可任意更新表中其他的值。


單擊 New 創建一條新的記錄。然後爲每個字段(Make, Model, Price, Body Style, Color)填充值。例如,可填充 Traband、Classic、1000、wagon 和 blue。單擊 Save 將條目保存到數據庫。


單擊 Database Application Example 標題欄,並將應用程序拖放到屏幕上別的位置。


單擊 Database Application Example 窗口的左邊框並向左拖動,以增加窗口尺寸。


在 Database Application Example 的菜單欄選擇 File Exit。


在 IDE 中,右鍵單擊項目的節點並選擇 Run Project。


Database Application Example 窗口將以應用程序關閉時的尺寸在相同位置打開。


回顧應用程序的生成部件


可視的JTable 組件和數據庫之間的連接是通過如下這些機制的結合來處理的,這些機制均由IDE 生成:


l Car.java 實體類,用於向CAR數據庫表讀取和寫入數據。實體類是一種特殊的類,用於實現通過 Java 代碼與數據庫交互。實體類利用 Java 註釋將類字段映射到數據庫列。


l META-INF/persistence.xml 文件,該文件定義了數據庫和實體類之間的連接。該文件也被作爲持久性單元來認識。


l 使用 beans 綁定來連接實體類的屬性與 JTable 組件的屬性。Beans 綁定基於 JSR 295 的新技術,並且很可能包含在今後的 Java SE 中發佈。


l 實體管理器、查詢和列表對象,三者均在 CarsAppFrame 類中定義並且均在 Inspector 窗口下的 Other Components 節點列出。


m 實體管理器對象用於在已定義的持久性單元作用域中檢索和提交數據。


m 查詢對象定義瞭如何從實體管理器中檢索特殊的數據連接。(通過在 Inspectory 窗口選擇查詢對象和在屬性表中更改查詢屬性,可以更改查詢對象的工作方式)。查詢屬性採用 JPA 查詢語言。


m 列表對象是一個可觀察集合,保存有來自查詢的數據。可觀察集合是一個特殊的集合,可在其上設置一個監聽程序來查看對集合作出更改的時間。


通過使用 Inspector 窗口和屬性表,您可以遵照如下步驟來了解 JTable 是如何綁定到數據的:


在 Inspector 窗口中,選擇 [JFrame] > innerPane [JPanel] > masterScrollPane [JScrollPane] > masterTable (JTable) 節點。然後單擊 Properties 窗口中的 Binding 選項卡。


查看元素屬性,確認其已綁定到列表。


單擊省略號[...]按鈕來打開 Bind masterTable.elements 定製器(customizer),通過其進一步定製表與數據庫之間的連接。例如,您會發現定製器能夠指定要綁定的表列。


除屬性表中的 Binding 類別外,還可使用 context 菜單中的 Bind 菜單。


添加更多控件


現在,針對最初排除的一些屬性,我們將爲窗體添加控件。我們將添加 JSlider 組件(針對輪胎尺寸和時髦外觀屬性)和 JCheckbox 組件(針對天窗和導流板)來替代表的使用。


遵照以下步驟添加其他組件:


在 Palette 窗口中單擊 JSlider 按鈕,然後單擊 New 按鈕上方的窗體,添加第一個滑塊。在窗體中單擊以插入滑塊之前,確認沒有槽狀水平準線顯示。這些線表示滑塊將插入到字段或按鈕的同一條線上。參照下圖來確定將滑塊拖放到窗體中的位置。


注意:如果誤將組件放到不想要的位置,從而造成一些意料之外的佈局變化,最簡單的恢復方法就是關閉而不保存。隨後再次打開重試。


如有必要,將滑塊向左拉伸,與文本字段組件的左邊對齊。


將滑塊向右拉伸以橫跨整個窗體的寬度。


在滑塊的左邊添加一個標籤,將其文本設置爲 Tire Size (單擊該標籤可進行編輯)。


在第一個滑塊的下方再添加一個滑塊,必要時調整其寬度並對齊。


在 Tire Size 標籤下再添加一個標籤並將文本設爲 Modernness。


在滑塊的下方添加兩個複選框。將其文本設爲 Spoiler 和 Sun Roof。


窗體應與如下所示的截屏類似。


"


將控件綁定到表中的值


現在,我們將利用 beans 綁定功能來將表單元格顯示的值和我們已添加的控件的狀態綁定。這樣一來,即可通過滑塊和複選框來更改表單元格的值。


將滑塊和複選框綁定到其相對應的表元素:


在窗體中右鍵單擊第一個滑塊並選擇 Bind > value。


在 Binding 對話框的 Binding Source 下拉列表中選擇 masterTable。


在 Binding Expression 下拉列表中,選擇 selectedElement > tiresize。


在窗體中右鍵單擊第二個滑塊並選擇 Bind > value。


在 Binding 對話框的 Binding Source 下拉列表中選擇 masterTable。


在 Binding Expression 下拉列表中選擇 selectedElement > modernness。


"


在窗體中右鍵單擊第一個複選框並選擇 Bind > selected。


在 Binding 對話框中的 Binding Source 下拉列表中選擇 masterTable。


在 Binding Expression 下拉列表中選擇 selectedElement > spoiler。


在窗體中右鍵單擊第二個複選框,選擇 Bind > selected


在 Binding 對話框中的 Binding Source 下拉列表中選擇 masterTable。


在 Binding Expression 下拉列表中選擇 selectedRow > sunRoof。


選擇 Run > Run Main Project 執行應用程序。運行中的應用程序應與如下所示的截屏類似。應該可以利用應用程中的滑塊和複選框來更改所選記錄的值。


"


創建定製的組件


爲更加圖形化地演示運行中的 beans 綁定,我們將添加一個將選定汽車的預覽塗以顏色的定製組件。我們將把這個組件的屬性綁定到相應的表元素。再次運行該程序時,隨着對所選列的更改和對各個字段值的更改,汽車的預覽將得到修改。


讓 CarPreview 組件對 CarsApp 項目起作用


如果還未完成此步驟,請下載 CarPreview.zip file


使用一種標準的壓縮(zip)工具解壓zip file檔案文件。


選擇 Project > Open Project 並引導到已解壓的壓縮文件內容,並選擇 CarPreview 選項目。


單擊 Open Project Folder。


項目在 IDE 中打開。


右鍵單擊 CarPreview 節點並選擇 Build Project。


這樣,項目中的文件將得到編譯。如此一來,就可以像使用 bean 那樣將 CarPreview 類直接拖放到窗體中。


這個組件是參照 JavaBeans 組件編寫的,因而可將其添加到 Palette,使用 Palette 可以很方便地向各種應用程序添加組件。但是現在我們將可以很容易就把組件從 Projects 窗口直接拖放到應用程序中。


將 CarPreview 組件添加到應用程序:


在 Projects 窗口中,展開 Car Preview > Source Packages > nodes。


將 CarPreview.java 類拖放到窗體。將其插入到菜單下方適當位置,置於表上並與其他控件在左邊對齊後固定到工具欄的下方。如下圖所示。


在水平方向上重新調整預覽組件在整個窗體中的尺寸。


採用將滑塊和複選框綁定到 JTable 中元素的那個方法,將所有 CarPreview 組件的綁定屬性綁定到 masterTable 對應的 selectedElement 屬性。利用 Bind 彈出菜單或屬性表中的 Binding 標籤。


再次運行 CarApp 應用程序。


程序運行時,隨着您選擇表中不同的列、更改表中的值、移動滑塊和選擇(取消選擇)複選框,均可看到 CarPreview 發生相應的變化。


下圖所示爲最終運行的應用程序。


期待您的反饋


後續步驟


本文介紹瞭如何在 IDE 中支持 Swing Application Framework 和 Beans Binding。有關使用 IDE 的 GUI Builder 的更全面介紹,請參閱GUI Building in NetBeans IDE 5.5。有關更多 Beans Binding 的信息,請參閱Beans Binding project page on java.net。有關更多 Swing Application Framework 的信息,請參閱Swing Application Framework project page on java.net。





本文轉自


http://netbeans.csdn.net/page/dac2e4b0-e983-4548-ad83-0fade4e54e33
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章