构建 Java 桌面数据库应用程序

NetBeans 6.0 Preview: Building a Java Desktop Database Application

http://www.netbeans.org/kb/60/ide-gui-db-prev.html

 

构建 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 DBJDK 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 ServerIDE中注册或是运行在JDK 6环境下。

判断Java DB是否已在IDE中注册:

l         打开 Tools 菜单,查找 Java DB Database 菜单项。

如果没有发现 Java DB 菜单项,需要在 IDE 中手动注册 Java DB

IDE 中手动注册 Java DB

  1. 在系统中创建一个存放数据库的文件夹
  2. 选择 Tools > Options
  3. Options 窗口中,单击 Advanced Options 按钮。
  4. Advanced Options 窗口中,展开 IDE Configuration > Server External Tools Settings 节点。然后选择 Java DB Database 节点。
  5. Advanced Options 窗口的右面板上单击 Java DB Location 项的省略号()按钮,并指定到数据库服务器的路径(例如:C:/javadb/db)。
  6. Database Location 属性中键入本环节步骤1中创建的文件夹的路径。
  7. 单击 Close

启动服务器并创建数据库

一旦Java DBIDE中注册,在主菜单 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
   
   

创建数据库:

  1. 选择 Tools > Java DB Database > Create Java DB Database。将打开 Create Java DB Database 对话框。
  2. Database Name 文本字段键入 car_database,并将 User Name Password 设置为 nbuser
  3. 单击 OK

连接到数据库

到此为止,我们已经成功地启动了数据库服务器并创建了数据库。但是,必须先连接到该数据库才能在IDE中调用该数据库。要连接到 car_database 数据库:

  1. 切换到 Runtime 窗口(Ctrl+5)并展开 Databases 节点,看到新建的数据库。

  1. 右键单击数据库连接节点(jdbc:derby://localhost:1527/car_database[nbuser on NBUSER])并选择 Connect

连接节点图标将呈现整个( ),标志连接成功。

  1. 右键单击连接节点的 Tables 子节点,并选择 Execute Command
  2. 复制 car.sql 文件内容并粘贴到 Source Editor SQL Command 1 标签中。

这便是将汽车数据填充到数据库时使用的 SQL 脚本。

  1. 单击 Source Editor 工具栏中的 Run SQL 按钮( )来运行该脚本。i

创建应用程序

  1. 选择 Choose Project > New Project
  2. 在向导的第一面板上展开 General 类别,选择 Java Desktop Application 平台。单击 Next

Java Desktop Application 平台提供了可视化应用程序的很多基本要素,包括基本的菜单项和命令。

  1. 在向导的 Name Location 页,进行如下操作:
    1. Project Name 字段键入 CarsApp。这个字段的值设定了 Projects 窗口中项目的显示名称。
    2. 编辑 Project Location 字段,为项目的元数据变更(可选)存放位置。
    3. Choose Application shell 字段选择 Database Application
    4. 单击 Next
  2. 在向导的 Master Table 页为 CAR 数据库选择数据库连接。数据库列表应看到如下内容:

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

  1. 输入数据库密码(nbuser)并选择 Remember Password During This Session 复选框。

在通向数据库的连接建立后,Database Table 字段应显示 CARColumns to Include 列表应包含 CAR 数据库的 10 个列的名称。就目前来说,我们仅需在应用程序中使用其中的 5 个。

  1. 选择底下的 5 个列名(从 SUN_ROOF 开始到 MODERNNESS 结束),并单击 < 按钮。单击 Next
  2. Detail Options 面板中单击 Finish

随后向导将通过一个表和一个数据库生成一个基本用户。

运行生成的应用程序

此时,您已经有了一个运行中的基本应用程序,该程序具备拥有如下功能的图形用户界面(GUI):

l         可在 CAR 数据库的 个列中查看和修改值。

l         基本的菜单项。

l         各会话间程序窗口状态的持久性。关闭应用程序时,窗口的位置和尺寸便被保存。再次运行程序时,窗口会在其关闭的位置处打开。

l         一个可以轻松定制的 About 对话框。

l         包含用户界面中标签的 .properties 文件。采用 .properties 来保持代码的逻辑结构与出现在程序用户界面中的文本分离是一种较好的方法。鉴于其他原因,这样的分离有助于使程序定位变得容易。

要了解其中一些已内嵌于应用程序中的功能,请遵照如下步骤:

  1. 右键单击项目的节点并选择 Run Project

数秒后,应用程序启动并打开一个名为 Database Application Example 的窗口。窗口中包含了一个表和和数个编辑 CARS 数据库的控件。

  1. 选择表中的第一条记录(针对 Acura)。
  2. 选择 Price 字段并将当前值替换为46999。然后按 Enter 键。

表中的值将被更新。

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

  1. 单击 New 创建一条新的记录。然后为每个字段(Make, Model, Price, Body Style, Color)填充值。例如,可填充 TrabandClassic1000wagon blue。单击 Save 将条目保存到数据库。
  2. 单击 Database Application Example 标题栏,并将应用程序拖放到屏幕上别的位置。
  3. 单击 Database Application Example 窗口的左边框并向左拖动,以增加窗口尺寸。
  4. Database Application Example 的菜单栏选择 File Exit
  5. 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 是如何绑定到数据的:

  1. Inspector 窗口中,选择 [JFrame] > innerPane [JPanel] > masterScrollPane [JScrollPane] > masterTable (JTable) 节点。然后单击 Properties 窗口中的 Binding 选项卡。
  2. 查看元素属性,确认其已绑定到列表。
  3. 单击省略号[...]按钮来打开 Bind masterTable.elements 定制器(customizer),通过其进一步定制表与数据库之间的连接。例如,您会发现定制器能够指定要绑定的表列。

除属性表中的 Binding 类别外,还可使用 context 菜单中的 Bind 菜单。

添加更多控件

现在,针对最初排除的一些属性,我们将为窗体添加控件。我们将添加 JSlider 组件(针对轮胎尺寸和时髦外观属性)和 JCheckbox 组件(针对天窗和导流板)来替代表的使用。

遵照以下步骤添加其他组件:

  1. Palette 窗口中单击 JSlider 按钮,然后单击 New 按钮上方的窗体,添加第一个滑块。在窗体中单击以插入滑块之前,确认没有槽状水平准线显示。这些线表示滑块将插入到字段或按钮的同一条线上。参照下图来确定将滑块拖放到窗体中的位置。

注意:如果误将组件放到不想要的位置,从而造成一些意料之外的布局变化,最简单的恢复方法就是关闭而不保存。随后再次打开重试。

  1. 如有必要,将滑块向左拉伸,与文本字段组件的左边对齐。
  2. 将滑块向右拉伸以横跨整个窗体的宽度。
  3. 在滑块的左边添加一个标签,将其文本设置为 Tire Size (单击该标签可进行编辑)
  4. 在第一个滑块的下方再添加一个滑块,必要时调整其宽度并对齐。
  5. Tire Size 标签下再添加一个标签并将文本设为 Modernness
  6. 在滑块的下方添加两个复选框。将其文本设为 Spoiler Sun Roof

窗体应与如下所示的截屏类似。

"

将控件绑定到表中的值

现在,我们将利用 beans 绑定功能来将表单元格显示的值和我们已添加的控件的状态绑定。这样一来,即可通过滑块和复选框来更改表单元格的值。

将滑块和复选框绑定到其相对应的表元素:

  1. 在窗体中右键单击第一个滑块并选择 Bind > value
  2. Binding 对话框的 Binding Source 下拉列表中选择 masterTable
  3. Binding Expression 下拉列表中,选择 selectedElement > tiresize
  4. 在窗体中右键单击第二个滑块并选择 Bind > value
  5. Binding 对话框的 Binding Source 下拉列表中选择 masterTable
  6. Binding Expression 下拉列表中选择 selectedElement > modernness

"

  1. 在窗体中右键单击第一个复选框并选择 Bind > selected
  2. Binding 对话框中的 Binding Source 下拉列表中选择 masterTable
  3. Binding Expression 下拉列表中选择 selectedElement > spoiler
  4. 在窗体中右键单击第二个复选框,选择 Bind > selected
  5. Binding 对话框中的 Binding Source 下拉列表中选择 masterTable
  6. Binding Expression 下拉列表中选择 selectedRow > sunRoof
  7. 选择 Run > Run Main Project 执行应用程序。运行中的应用程序应与如下所示的截屏类似。应该可以利用应用程中的滑块和复选框来更改所选记录的值。

"

创建定制的组件

为更加图形化地演示运行中的 beans 绑定,我们将添加一个将选定汽车的预览涂以颜色的定制组件。我们将把这个组件的属性绑定到相应的表元素。再次运行该程序时,随着对所选列的更改和对各个字段值的更改,汽车的预览将得到修改。

CarPreview 组件对 CarsApp 项目起作用

  1. 如果还未完成此步骤,请下载 CarPreview.zip file
  2. 使用一种标准的压缩(zip)工具解压zip file档案文件。
  3. 选择 Project > Open Project 并引导到已解压的压缩文件内容,并选择 CarPreview 选项目。
  4. 单击 Open Project Folder

项目在 IDE 中打开。

  1. 右键单击 CarPreview 节点并选择 Build Project

这样,项目中的文件将得到编译。如此一来,就可以像使用 bean 那样将 CarPreview 类直接拖放到窗体中。

这个组件是参照 JavaBeans 组件编写的,因而可将其添加到 Palette,使用 Palette 可以很方便地向各种应用程序添加组件。但是现在我们将可以很容易就把组件从 Projects 窗口直接拖放到应用程序中。

  CarPreview 组件添加到应用程序:

  1. Projects 窗口中,展开 Car Preview > Source Packages > nodes
  2. CarPreview.java 类拖放到窗体。将其插入到菜单下方适当位置,置于表上并与其他控件在左边对齐后固定到工具栏的下方。如下图所示。

  1. 在水平方向上重新调整预览组件在整个窗体中的尺寸。
  2. 采用将滑块和复选框绑定到 JTable 中元素的那个方法,将所有 CarPreview 组件的绑定属性绑定到 masterTable 对应的 selectedElement 属性。利用 Bind 弹出菜单或属性表中的 Binding 标签。
  3. 再次运行 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值