程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 創建一個Java應用數據庫的桌面應用程序

創建一個Java應用數據庫的桌面應用程序

編輯:關於JAVA

本教程將展示如何創建一個 Java 的桌面應用程序,用來訪問以及更新數據庫。本教程利用 NetBeans IDE 6.0 支持的以下技術:

Java 持久化 API (JPA),幫助你使用Java 代碼來與數據庫接合

Beans 綁定技術 (JSR 295) ,為不同的JavaBeans 控件提供一種方式來相互同步屬性值。舉一個例子, 你可以使用 Beans 綁定技術來保持 JTable 可視化控件中各單元的值與實體類中各域的值同步。(在這裡,實體類表示數據表)

Swing 應用程序框架 (JSR 296) ,提供了一些十分有用的構件,用來快速建立桌面應用程序。

我們將建立一個數據庫 CRUD (增、刪、改、查)的應用程序,使用一個自定義的控件用來形象化數據(汽車設計預覽)。

本教程大多基於開發過程中的截圖。用戶界面中的一些部分在演示程序制作中可能有改變, 所以您可能會注意到教程與演示程序中的一些不同。您可以現在浏覽演示程序(預計約9分鐘) 或者 下載演示程序(http://www.netbeans.org/files/documents/4/1714/netbeans_6_gui_builder.zip).

學習這個教程,你需要在你的計算機上安裝以下軟件:

NetBeans IDE 6.0 .

Java 標准開發工具包 (JDK) 版本 5.0 或者 6.0 

Java DB 數據庫服務器 (Java DB 已包含在 JDK 6)

數據庫的 SQL 描述,參閱 http://usersguide.netbeans.org/files/documents/40/1423/car.sql.

CarPreview project 的工程文件包,參閱 http://usersguide.netbeans.org/files/documents/40/1433/CarPreview.zip

建立數據庫

在 IDE 中開始創建一個 CRUD(增、刪、改、查) 桌面應用程序之前, 您應該已經把您的 IDE 鏈接上應用程序使用的數據庫了。完成這項鏈接高級設置可以允許您使用 IDE 的高級特性, 幫助您自動的把數據庫與您的應用程序綁定起來。

在本教程中,我們提供了使用 Java DB 數據庫的教程, 因為在 IDE 中提供了很方便的界面來啟動以及停止 Java DB 數據庫。不過,如果不麻煩的話,您也可以選擇其他的數據庫。

首先檢查您是否在 IDE 中注冊了Java DB。一般來說,Java DB 是自動在 IDE 中注冊的, 比如說當您在 IDE 中注冊了 Sun Java System Application Server 或者您在 JDK 6 上運行程序的時候。

確定 Java DB 已經在 IDE 中注冊:

打開“工具”菜單,點擊 Java DB Database 的子菜單。

如果“設置”菜單是唯一一個沒有標記不可用的, 您需要在 IDE 中手動啟動 Java DB 的注冊。

在 IDE 中手動注冊 Java DB:

選擇 工具 > Java DB Database > 設置.

在 JavaDB 安裝路徑中輸入數據庫服務器的安裝路徑

在數據庫位置屬性中,選擇一個文件夾來存儲數據庫文件。

單擊確定。

服務器的啟動以及數據庫的創建

一旦 Java DB 在 IDE 中注冊成功,您可以很簡單的啟動或者停止數據庫服務器, 當然,創建一個新的數據庫也是如此簡單。

啟動數據庫服務器:

選擇 工具 > JavaDB Database > 啟動服務器.

如果您還沒有在“設置”中為數據庫設置數據庫文件存儲位置, “設置數據庫位置”的對話框將會出現,為數據庫文件輸入一個存儲的位置, 當然,您也可以根據您的需要新建一個文件夾。

一旦服務器啟動,Java DB 數據庫進程的標簽會顯示在“輸出”窗口, 顯示如下的一段消息:

Apache Derby Network Server - 10.2.2.0 - (485682) started and ready
       to accept connections on port 1527 at 2007-09-05 10:26:25.424 GMT

創建數據庫:

選擇 工具 > JavaDB Database > 創建數據庫. 出現創建 JavaDB 數據庫的對話框。

在數據庫名稱中輸入 car_database,並且設置數據庫的用戶名和密碼為 nbuser。

單擊確定。

鏈接數據庫

到此,我們成功的啟動了數據庫服務器並且創建了一個數據庫。但是在 IDE 中開始工作前,我們仍然需要連接這個新的數據庫。鏈接 car_database 數據庫:

轉到“服務”窗口( Ctrl + 5 ),展開 Databases 節點查看您的新數據庫。

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

鏈接節點的圖標現在應該完全變成了 (),表示鏈接成功。

展開聯機金額節點,右鍵單擊其數據表的子節點,選擇“運行命令”。

拷貝 car.sql 文件中的內容, 並將其粘貼在 Source Editor 的標簽“ SQL Command 1 ”中。

粘貼的這些內容是 SQL 的描述語句,他將汽車的一些數據植入到數據庫中。

在 Source Editor 的工具欄上點擊“運行 SQL ”按鈕 () 運行。

創建應用程序

選擇 項目 > 新項目。

在向導的第一頁,展開 Java 類並選擇 Java 桌面應用程序模板。單擊下一步。

Java 桌面應用程序模板提供了許多基本的可視化應用模塊,包括菜單以及按鈕。

在向導的 Name and Location 頁面中,做以下事情:

在項目名稱中輸入 CarsApp。這個值設置了在項目窗口中顯示的該項目的名稱。

另外,也可以根據您的需要更改項目路徑中更改項目的元數據位置。

在選擇應用程序類型處選擇數據庫應用程序。

單擊下一步。

在向導的 Master Table 頁面中,為數據庫 CAR 選擇數據庫連接。數據庫列表應同以下所示: jdbc:derby://localhost:1527/car_database[nbuser on NBUSER]

為數據庫填寫密碼 (nbuser) 並選擇 Remember Password During This Session 選項。

在與數據庫建立連接後,數據表應該顯示為 CAR , 其包含的列應包括 10 列 CAR 數據庫的內容的名稱。現在,我們的應用程序中只用其中的5列。

選擇倒數5列的名稱 ( SUN_ROOF 起到 MODERNNESS 止) 並點擊 < 按鈕 移動他們到左側的列表中。單擊下一步。

在 Detail Options 頁中, 單擊完成。

向導其後會生成基本的用戶界面,包含一個表格以及一個數據庫連接。在 IDE 生成項目以及代碼的過程可能會耗費幾秒鐘或更長一些的時間。

運行生成的程序

這個時候,您就有了一個最基本的用戶圖形界面( GUI )應用程序, 有如下功能:

能夠查看以及修改數據庫 CAR 的五個添加列的值。

基本的菜單項。

在會話過程中保存當前窗口的狀態信息。當您關閉應用程序的時候,窗口的位置以及大小會被記錄。這樣,當您再次運行這個應用程序的時候,窗口會在上次關閉的位置被打開。

一個“關於”對話框,您可以很簡單的裝扮它。

.properties 文件含有用戶界面中的標簽( Labels )內容。使用 .properties 文件是一個很好的方式,您可以將您的邏輯代碼和要在用戶界面中顯示的 文本信息分割開來。這種分割最起碼可以使得您的程序可以更容易的被本地化。

按照以下步驟查看已經在應用程序中建立好的一些特性:

右鍵單擊“項目”節點,選擇“運行”。

稍等片刻,應用程序啟動,出現一個叫做“ Database Application Example ”的窗口。這個窗口包含一個表格以及一些控件,您可以通過這些控件來編輯 CAR 數據庫。

選擇表格中的第一個記錄( Acura )。

選擇價格( Price )這個字段的值,將其存在的值改為 46999 。然後按回車。

這時,這個值在表格中顯示被更改了。(不過,當您單擊保存之後這個值才會寫入數據庫中。)

同樣,您可以用這種方法更新表格中其他的值。

單擊新建按鈕創建一個新的記錄。之後為每一個字段( Make, Model, Price, Body Style, Color )填寫相應的值。比如您可以填寫: Trabant,Classic,1000,wagon,以及 blue。單擊保存來保存這些數據到數據庫中。

點擊並按住 Database Application Example 的標題欄,拖動到您的屏幕的其他位置上。

點擊並按住 Database Application Example 窗口的左側邊框 向左邊拖動,改變這個窗口的大小。

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

在 IDE 中,右鍵單擊“項目”節點,選擇“運行項目”。

Database Application Example 窗口將會按照以您關閉應用程序時候所改變的窗體位置以及大小打開。

回顧應用程序的生成部分

主表(一個 JTable 控件)和數據庫之間的連接被如下 IDE 生成的一個組合機制所解決:

實體類 Car.java 用於讀寫數據庫 CAR 中的數據。實體類是一種特殊的類,使得您可以通過 Java 代碼來讓您的程序與數據庫相結合。實體類使用 Java 的注釋將類中字段映射到數據庫的列中。.

META-INF/persistence.xml 文件定義了數據庫與實體類之間的關聯。這個文件也是眾所周知的一個持久化單元。

使用 beans 綁定技術將實體類中的屬性與 JTable 控件中的屬性相關聯。Beans 綁定技術是一個基於 JSR 295 的一項新技術,它或許會被包含在 Java SE 的後續版本中。

在 CarsAppFrame 中定義了 entityManager, query 以及 list 對象並列在 Inspectory 窗口中。

實體管理器對象用來在已定義的持久化單元的域中檢索以及提交數據。

查詢對象定義指定的數據集如何向 entityManager 對象檢索數據。(您可以通過選擇在 Inspectory 窗口中的查詢對象,改變 query 屬性表裡的屬性值改變查詢方式。query 屬性使用 JPA 查詢語言。)

列表對象是一種可觀察集,其持有來自查詢的數據。可觀察集是集合的特殊種類,您可在其上設置一個監聽器, 來查看何時對集合做出的更改。

使用 Inspector 窗口和屬性表,您可以按照如下步驟看到 JTable 如何綁定數據:

在 Inspector 窗口中,依次選擇 mainPanel[JPanel] > masterScrollPane [ScrollPane] > masterTable [JTable] 節點。然後在“屬性”窗口中單擊 Binding 標簽。

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

單擊省略號 [...] 按鈕,打開 Bind masterTable.elements 定制器, 您可以更進一步定制表格和數據庫的綁定。舉個例子,您可以看到使用定制器您能夠綁定指定的表中的列。

除了屬性表中的 Binding 種類外,您還可以使用上下文菜單中的 Bind 菜單。

添加更多的控制

針對一些我們起初排除的屬性,我們現在向表單添加控件。替代使用表格, 我們將添加 Jslider 組件(用於 tire size 和 modernness ) 和 JCheckbox 組件(用於 sun roof 和 spoiler )來實現操作的相應功能。.

根據以下步驟添加額外的控件:

添加第一個滾動條,在 Palette 窗口中單擊 Slider 按鈕, 然後單擊 New 按鈕上方的窗體。在單擊窗體插入滾動條之前, 請確定沒有出現水平槽引導線。這些線條表示滾動條將被插入在與文本域或按鈕的同一行。參照下圖了解應將滾動條放在表單的位置。

提示: 如果你將控件放置在了您不想要的位置上,因此造成了一些布局上不期望的改變。您可以使用“撤銷”命令撤銷這些修改。選擇 Edit > Undo 或者按 Ctrl-Z。

如果需要,將滾動條向左邊伸展並文本框控件的左邊對齊。

將滾動條向右邊伸展橫跨整個窗體寬度。

在滾動條左邊添加一個標簽,並設置其顯示的文本為 Tire Size。(點擊標簽令其可編輯。)

在第一個滾動條下面添加另一個滾動條, 按照需要調整好它的寬度以及對其方式。

在 Tire Size 標簽下面添加另外一個標簽,並設置其顯示的文本為 Modernness。

在滾動條的下面添加兩個復選框,將它們的名稱分別設置為 Spoiler 以及 Sun Roof.。(用點擊復選框一次,稍等片刻,再次點擊復選框 這種方式使得顯示文本可被編輯。您也可以用右鍵單擊復選框後選擇編輯文本。)

窗體應該如如下截圖一樣。

將控件與表格中的值進行綁定

我們現在將使用 beans 綁定技術特性,將表格單元中顯示的值和我們已經添加的控件的狀態綁定。這將使您可以通過滾動條和復選框改變表格單元中的值。

將滾動條綁定至相對應的表元素:

在窗體中,右鍵單擊滾動條 Tire Size 後選擇 Bind > value。

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

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

"

在窗體中,右鍵單擊滾動條 Modernness 後選擇 Bind > value。

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

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

將復選框綁定至相對應的表元素:

在窗體中,右鍵點擊復選框 Spoiler 後選擇 Bind > selected。

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

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

單擊 OK 退出 Bind 對話框。

在窗體中,右鍵點擊復選框 Sun Roof 後選擇 Bind > selected。

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

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

單擊 OK。

您現在可以使用滾動條以及復選框改變數據庫的輸入項了。

驗證滾動條和復選框是否工作:

打開 Services 窗口。

確定 IDE 已經與數據庫相連接,鏈接請右鍵單擊 Databases > jdbc:derby;//localhost:1527/car_database 然後選擇 Connect。

右鍵單擊 Databases > jdbc:derby;//localhost:1527/car_database > Tables > node 並選擇 View Data。

查看 SUN_ROOF, SPOILER, TIRE_SIZE 以及 MODERNNESS 的第一個記錄集的值。

選擇 Run > Run Main Project 運行程序。

運行中的應用程序應看起來與下面顯示的截圖相似。

"

在運行中的應用程序裡,選擇第一個記錄集。

移動滾動條並更改復選框的選項。

單擊保存按鈕將更改內容寫入數據庫。

在 Services 窗口中,再次使用 View Data 命令。

數據庫中的值應該被更改為您所更改的值。

建立一個自定義控件

為了更加圖形化的演示 Beans 綁定技術的運行讓我們添加一個自定義控件, 畫出選擇出的車的預覽圖。我們將綁定此控件的屬性以及所對應的表格元素。然後當您再次運行程序,車輛預覽將按照您選擇的行以及各個字段的值的變化而改變。

令 CarPreview 控件可在 CarsApp 項目中可被應用:

如果您還沒有完成這些,請下載文件 CarPreview.zip。

使用標准 zip 工具,解壓此 zip 文件的檔案內容。

選擇 File > Open Project ,定位解壓後的 zip 文件的檔案內容, 然後選擇 CarPreview 項目。

點擊“打開項目”

項目在 IDE 中被打開。

右鍵單擊 CarPreview 節點,然後選擇 Build。

編譯此項目中的文件,這樣您可以將 CarPreview 類作為一個 bean 來使用, 可以將其直接拖拽到窗體中。

這個組件被寫為一個 JavaBeans 組件,這樣您可以將其添加到 Palette 中,這樣您可以很方便的將 這個組件添加到多個應用程序中。但是現在我們將簡單的將此組件直接從“項目”窗口拖動到您的程序中。

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

在“項目”窗口中,依次展開 Car Preview > Source Packages > carpreview > nodes.

拖動 CarPreview.java 類到窗體中。將其插入到菜單的下方,將其放在窗體上,左對齊於其他的控件, 並與工具欄的底部對齊,如下圖所示。

在窗體上水平方向調整預覽組件。

采用與滾動條和復選框綁定 masterTable 組件中的元素相同的方法, 綁定所有 CarPreview 組件中的屬性到 masterTable 中相應的 selectedElement 屬性。使用 Bind 彈出菜單或者屬性表中的 Binding 標簽。

再次運行 CarApp 應用程序。

在運行中的應用程序中,您可以看到 CarPreview 控件根據您選擇的表格中不同的行, 改變表格中的值,移動滾動條以及選擇和取消選擇復選框而改變。

下圖為應用程序的最終運行結果。

進階

本教程為在IDE 中使用 Swing 應用程序框架以及 Beans 綁定技術提供了初步教程。

了解更多關於 GUI 應用程序的設計,參閱 Designing a Swing GUI.

了解更多關於在 IDE 中使用 Beans 綁定技術, 參閱 Binding Beans and Data in a Desktop Application.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved