您的位置:首页 > 编程语言 > Java开发

利用NetBeans构建一个 Java 桌面数据库应用程序

2007-06-04 11:21 826 查看
本教程介绍了如何创建一个能够对数据库进行访问和更新的桌面 Java 应用程序。该教程利用了 NetBeans IDE 6.0 对以下技术的支持:
l Java 持久性 API,它帮助使用 Java 代码与数据库进行交互操作。
l Beans 绑定 (JSR-295) ,它为不同的 JavaBeans 组件提供一种拥有相互同步属性值的方法。例如,可以使用 beans 绑定将 Jtable 可视化组件中的单元值与实体类中的字段值同步。(而实体类则代表数据库表的列。)
l Swing 应用程序框架 (JSR-296) ,它为快速创建桌面应用程序提供一些有用的构建程序块。
我们将使用在可视化数据中使用的一个自定义组件来创建一个数据库 CRUD (创建、读、更新、删除)应用程序。
本次编写的教程配合 NetBeans IDE 6.0 Preview (Milestone 9) build 使用。本教程不适于较早的 milestone build (重要构件版本)。此外,在后续构件版本中会存在一些变更,这些变更会影响本教程的准确性。
本教程在很大程度上是以视频演示为基础的,该视频演示基于较早的开发构件版本。在演示制作完成以后,用户界面已经发生了一些改变,所以,可能会发现本教程和演示之间会存在一些差异。
预计持续时间:45 分钟

前提条件

本文假定您基本了解以下技术,或者有使用这些技术编程的经验:
l Java 编程
l NetBeans IDE

教程所需的软件

本教程需要在计算机上安装以下软件:
l NetBeans IDE 6.0 Preview (Milestone 9)下载)。
l Java Standard Development Kit (JDK) 5.0 或者 6.0 版(下载
l Java DB 数据库服务器(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 自动将数据库与应用程序绑定的功能。
在本教程中,我们提供使用 Java DB 数据库的指令,因为有一个便捷界面可以从 IDE 中启动和停止 DB 数据库服务器。也可以使用一个不同的服务器,但困难很大。
首先,检查是否在 IDE 中对 Java DB 进行了注册。许多情况下,Java DB 在 IDE 中被自动注册,比如:已经在 IDE 中注册了 Sun Java 系统应用程序服务器,或者正在运行 JDK 6 时。
确定是否在 IDE 中注册了 Java DB 的步骤:
l 打开 Tools 菜单,查找 Java DB Database 菜单项。
如果没有 Java DB 菜单项,需要在 IDE 中手工注册 Java DB。
IDE 中手工注册 Java DB 的步骤:

在系统上创建一个文件夹来保存数据库。

选择 Tools > Options。

在 Options 窗口中,单击 Advanced Options 按钮。

在 Advanced Options 窗口中,展开 IDE Configuration > Server and External Tools Settings 节点。然后选择 Java DB Database 节点。

在 Advanced Options 窗口的右侧,单击省略符号 ( ) 按钮获取 Java DB Location,并为数据库服务器设置路径(例如:C:/javadb/db )。

在 Database Location 属性中,键入在该步骤 1 中所创建文件夹的路径。

单击 Close。

启动服务器并创建数据库

向 IDE 注册了 Java BV 后,在主菜单中的 Tools 下会出现 Java DB Database 菜单项。该菜单项能够方便地实现数据库服务器的启动和停止,同时方便地创建一个新的数据库。
启动数据库服务器的步骤
l 选择 Tools > Java DB Database > Start Java DB Server。
如果为数据库设定位置,则会出现 Set Database Location 对话框。为数据库服务器输入一个位置,保存数据库。也可以在此创建一个新的文件夹。
启动服务器后,在 Output 窗口中将打开 Java DB Database 处理选项卡,并显示类似如下的消息:
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 按钮 ( ),运行脚本。

创建应用程序

选择 Project > New Project。

在向导的第一个面板中,展开 General 种类,并选择 Java Desktop Application 模板。单击 Next。

Java Desktop Application 模板提供许多可视化应用程序的基本元素,包括:基本菜单项目和命令。

在向导的 Name and Location 页面中,执行以下操作:

在 Project Name 字段中,键入 CarsApp。该字段的值设定 Projects 窗口中项目计划的显示名称。

可选择编辑 Project Location 字段,以改变项目元数据的位置。

在 Choose Application shell 字段中,选择 Database Application。

单击 Finish。

在向导的 Master Table 页面中,为 CAR 数据库选择数据库连接。数据库的清单看上去应该如下所示:
jdbc:derby://localhost:1527/cars[nbuser on NBUSER]

为数据库填写密码 (nbuser) ,并选择 Remember Password During This Session 复选框。

在建立了与数据库的连接之后,Database Table 字段应该显示 CAR,并且 Columns to 列表应该包含 CAR 数据库 10 列的名称。现在,我们将在应用程序中仅使用其中的五个。

选择下面五个列名称(从 SUN_ROOF 开始,到 MODERNNESS 结束),并单击 < 按钮。单击 Next。

在 Detail Options 面板上,单击 Finish。

然后,向导生成一个基本用户界面,其中一个表与一个数据库相连接。

运行生成的应用程序

这时便拥有了一个带图形用户界面(GUI)的基本运行应用程序,该图形用户界面具有以下特性:
l 查看和修改 CAR 数据库五个列中数值的能力
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 binding,将实体类的属性与 JTable 组件的属性连接。Beans binding 是一种基于 JSR 295 的新技术,该技术将可能被包含在将来 java SE 的发布中。
l entityManager、query 以及 list 对象,这些对象在 CarsAppFrame 类中定义,并在 Other Components 节点下的 Inspector 窗口中列出。
m 实体管理器对象用于在定义的持久单位范围内找回和提交数据。
m 查询对象定义如何从实体管理器中找回特定的数据集合。可以通过在 Inspectory 窗口中选择查询对象,并在属性表中更改 query 属性的方式,改变查询对象的工作方式。query 属性使用 JPA 查询语言。
m 列表对象是一种可观察集合,该集合持有来自查询的数据。可观察集合是集合的特殊种类,在其上可设置一个监听器,以发现对集合做出更改的时间。
使用 Inspector 窗口和属性表,可以按照以下步骤了解 Jtable 是如何与数据绑定的:

在 Inspector 窗口中,选择 [JFrame] > innerPane [JPanel] > masterScrollPane [JScrollPane] > masterTable (JTable) 节点。然后单击 Properties 窗口中的 Binding 选项卡。

观察元素属性,确认它已与列表绑定。

单击省略号 [...] 按钮,打开 Bind masterTable 元素定制器,在此可以进一步定制表和数据库之间的绑定。例如,可以看到,定制器能够实现对指定表列的绑定。

除了属性表中的 Binding 种类外,还可以使用上下文菜单中的 Bind 菜单。

添加更多控件

针对一些我们起初排除的属性,我们现在向表单添加控件。我们不使用表格,我们将添加 Jslider 组件(用于 tire size 和 modernness 属性)和 JCheckbox 组件(用于 sun roof 和 spoiler 属性)。
按照以下步骤添加额外的组件:

单击 Palette 窗口中的 JSlider 按钮,添加第一个滑动条,然后单击位于 New 按钮上方的表单。在单击表单插入滑动条之前,应确保未出现水平槽形引导线。这些线条表示滑动条将被插在与字段或者按钮相同的行上。参照下图,了解应该将滑动条放在表单的什么位置。

注意:如果将组件放到了不希望放置的位置,并由此造成了布局上的改变,最简单的恢复办法是不保存更改关闭表单。然后重新打开表单,再试一次。

如有必要,向左展开滑动条,将它与文本字段组件的左侧对齐。

向右展开滑动条,跨过整个表单的宽度。

在滑动条的左侧添加一个标签,并将它的文本设为 Tire Size。(单击标签,使其处于可编辑状态。)

在第一个滑动条的下方添加另一个滑动条,必要时调整它的宽度并对齐。

在 Tire Size 标签下添加另一个标签,并将它的文本设为 Modernness。

在滑动条的下方添加两个复选框。将它们的文本设为 Spoiler 和 Sun Roof。

表单看起来应该类似于如下所示的屏幕截图。
"

将控件与表格中的值绑定

我们现在将使用 beans binding 特性,将表格单元中显示的值与已添加控件的状态联系起来。这样可以实现使用滑动条和复选框改变表格中的单元值。
将滑动条和复选框与其相应的表格元素绑定的步骤:

在表单中,右键单击第一个滑动条,并选择 Bind > value。

在 Binding 对话框的 Binding Source 下拉列表中,选择 masterTable。

在 Binding Expression 下拉列表中,选择 Element > tiresize。

在表单中,右键单击第二个滑动条,并选择 Bind > value。

在 Binding 对话框的 Binding Source 下拉列表中,选择 masterTable。

在 Binding Expression 下拉列表中,选择 selectedElement > tiresize。

"

在表单中,右键单击第一个复选框,并选择 Bind > selected。

在 Binding 对话框的 Binding Source 下拉列表中,选择 masterTable。

在 Binding Expression 下拉列表中,选择 selectedElement > spoiler。

在表单中,右键单击第二个复选框,并选择 Bind > selected。

在 Binding 对话框的 Binding Source 下拉列表中,选择 masterTable。

在 Binding Expression 下拉列表中,选择 selectedRow > sunRoof。

选择 Run > Run Main Project 执行应用程序。运行的应用程序看上去类似于如下所示的屏幕截图。可以使用运行的应用程序中的滑动条和复选框更改所选记录的值。

"

建立一个自定义组件

为了以更加图形化的方式演示运行中的 bean 绑定,我们将添加一个可以预览所选车型喷涂效果的自定义组件。我们将把该组件的属性与相应的表格元素进行绑定。再次运行应用程序的时候,车型预览将随所选行的变化和各种字段值的变化而改变。
使 CarPreview 组件能够应用于 CarsApp 项目的步骤

如果您尚未这样做,请下载CarPreview.zip 文件。

使用标准 zip 工具,解压 zip 文件。

选择 Project > Open Project,然后找到 zip 解压后的文件,并选择 CarPreview 项目。

单击 Open Project Folder。

该项目在 IDE 中打开。

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

这样便对项目中的文件进行了汇编,以便将 CarPreview 类作为一个 bean 来使用,能够在表单上直接进行拖放操作。
该组件被写成 JavaBeans 组件,所以,可以将其添加至 Palette,这样可以方便地向多个应用程序添加组件。但是现在,我们只是简单地将组件直接从 Projects 窗口拖进应用程序。
向应用程序添加 CarPreview 组件的步骤

在 Projects 窗口中,展开 Car Preview > Source Packages > carpreview > 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://www.netbeans.org/kb/60/ide-gui-db-prev.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息