本教程介绍了如何创建一个能够对数据库进行访问和更新的桌面 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 的步骤:
向 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
创建数据库:
至此,我们成功地启动了数据库服务器,并且创建了一个数据库。但是,我们还需要连接新数据库,才能开始使用它在 IDE 中工作。连接 car_database 数据库的步骤:
现在连接节点图标应该出现 ( ) ,这表示连接成功。
这是 SQL 脚本,该脚本将把有关汽车的数据移往数据库。
Java Desktop Application 模板提供许多可视化应用程序的基本元素,包括:基本菜单项目和命令。
在建立了与数据库的连接之后,Database Table 字段应该显示 CAR,并且 Columns to 列表应该包含 CAR 数据库 10 列的名称。现在,我们将在应用程序中仅使用其中的五个。
然后,向导生成一个基本用户界面,其中一个表与一个数据库相连接。
这时便拥有了一个带图形用户界面(GUI)的基本运行应用程序,该图形用户界面具有以下特性:
l 查看和修改 CAR 数据库五个列中数值的能力
l 基本菜单项目。
l 其会话期间窗口状态的维持。当关闭应用程序时,记住窗口位置和大小。所以当重新打开应用程序时,窗口将在其关闭的位置打开。
l 一个 About 对话框,可以方便地对其进行自定义。
l 包含在用户界面中标签的 .properties 文件。使用 .properties 文件是维持从文本中分离代码的逻辑的好办法,该文本出现在应用程序的用户界面中。这种分离可以使程序本地化变得更加方便。
遵照以下这些步骤,查看已经构建于应用程序中的一些功能:
几秒钟后,应用程序启动,出现一个名为 Database Application Example 的窗口。该窗口包含一个表格和几个能够编辑 CARS 数据库的控件。
表格中的数值应该被更新。
同样,可以更新表格中的其他任何数值。
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 是如何与数据绑定的:
除了属性表中的 Binding 种类外,还可以使用上下文菜单中的 Bind 菜单。
针对一些我们起初排除的属性,我们现在向表单添加控件。我们不使用表格,我们将添加 Jslider 组件(用于 tire size 和 modernness 属性)和 JCheckbox 组件(用于 sun roof 和 spoiler 属性)。
按照以下步骤添加额外的组件:
注意:如果将组件放到了不希望放置的位置,并由此造成了布局上的改变,最简单的恢复办法是不保存更改关闭表单。然后重新打开表单,再试一次。
将控件与表格中的值绑定
我们现在将使用 beans binding 特性,将表格单元中显示的值与已添加控件的状态联系起来。这样可以实现使用滑动条和复选框改变表格中的单元值。
将滑动条和复选框与其相应的表格元素绑定的步骤:
"
"
为了以更加图形化的方式演示运行中的 bean 绑定,我们将添加一个可以预览所选车型喷涂效果的自定义组件。我们将把该组件的属性与相应的表格元素进行绑定。再次运行应用程序的时候,车型预览将随所选行的变化和各种字段值的变化而改变。
使 CarPreview 组件能够应用于 CarsApp 项目的步骤:
该项目在 IDE 中打开。
这样便对项目中的文件进行了汇编,以便将 CarPreview 类作为一个 bean 来使用,能够在表单上直接进行拖放操作。
该组件被写成 JavaBeans 组件,所以,可以将其添加至 Palette,这样可以方便地向多个应用程序添加组件。但是现在,我们只是简单地将组件直接从 Projects 窗口拖进应用程序。
向应用程序添加 CarPreview 组件的步骤:
在运行中的应用程序中可以发现,在选择表格中不同的行、修改表格中的值、移动滑动条以及选择和不选复选框时,CarPreview 组件会随之发生变化。
查看原文:http://www.netbeans.org/kb/60/ide-gui-db-prev.html