在本教程中,您将使用 Oracle JDeveloper (10.1.3.1.0) 快速构建 ADF Swing 表单。并使用 ADF 业务组件构建数据模型。
当您的应用程序需要快速响应用户的输入或更改用户显示的事件时,您可以使用 ADF Swing 来构建富客户端应用程序。这对在一个屏幕上显示具有多个主/从相关性的复杂用户界面来说也适用。此外,与 Web 相比,Swing 还可以为需要执行即时项目验证的应用程序(可能基于复杂的逻辑)提供更好的支持。使用 Swing 客户端的另一个情形是当由于业务原因应用程序需要断网离线工作的时候。
所需时间
30 分钟
本教程包括下列主题:
概述 | |
前提条件 | |
创建数据库连接 | |
总结 |
将鼠标置于此图标上 可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。
在本教程中,您将使用 ADF Swing 构建 Swing 应用程序,将 ADF 业务组件用作业务服务。ADF Swing 应用程序也可以基于 EJB、Web Services、TopLink、POJO 等业务服务构建,开发过程与使用 ADF Swing 类似,但本文不做专门介绍。
首先,您要将 ADF 业务组件模型创建为一个包含业务逻辑和验证规则的持久层。然后使用 ADF Swing 构建一个 Swing 主从应用程序,该应用程序显示客户信息及其所下的订单。使用 ADF 业务组件的 ADF Swing 应用程序可以部署于 2 层和 3 层 体系中。在本文中,您将使用 JDeveloper 中内嵌的 Java 运行时环境 (JRE) 在本地运行和测试应用程序。
ADF Swing 是一个绑定层,它将标准的 Swing 组件连接到 Oracle 应用开发框架 (ADF) 绑定层。应用程序通过 ADF 使用同一客户端 API 连接上述不同的业务服务。对于所有需要为其企业开发客户端-服务器应用程序的开发人员来说,使用 ADF Swing 能提升生产率。
开始本教程之前,您应该:
1. |
可以访问或已经安装了 Oracle JDeveloper (10.1.3.1.0) 生产版。可以从 Oracle 技术网下载它。 |
2. |
可以访问或已经安装了 Oracle 数据库 10g(第 2 版或第 1 版)。可以从 Oracle 技术网 ( http://www.oracle.com/technology/software/products/database/oracle10g/index.html) 下载它。 |
3. |
可以访问或已经安装了示例模式。 该 OBE 使用 Oracle 数据库 10g 附带的 HR 模式。 可以在线获取有关在 JDeveloper 中安装 HR 模式并创建到其的连接的指导: http://www.oracle.com/technology/obe/obe1013jdev/common/OBEConnection.htm |
4. |
启动 JDeveloper。双击 JDeveloper 可执行文件 jdeveloper.exe ,该文件位于您解压缩它的根目录 ( ) 中。
如果 Migrate User Settings 对话框打开,请单击 NO。 关闭 Tip of the Day 窗口。 |
5. |
现在应显示 JDeveloper IDE。
|
Java 数据库连接 (JDBC) 是 Java 应用程序用于连接关系数据库的一种标准应用程序编程接口 (API)。JDeveloper 使用连接导航器维护应用程序的连接信息。连接导航器简化了数据库连接的创建、管理和测试。
如果还没有创建到 HR 模式的 JDBC 连接,则执行下列步骤:
1. |
单击 Applications Navigator 上的 Connections 选项卡。如果未显示 Connections 选项卡,请从 JDeveloper 主菜单中选择 View > Connection Navigator。
|
2. |
右键单击 Database 节点,从上下文菜单中选择 New Database Connection。
|
3. |
在 Create Database Connection 向导中,查看 Welcome 页面上的信息,然后单击 Next。
|
4. |
在 Connection Name 域中,输入 hrconn 。
单击 Next 继续。 |
5. |
在 Authentication 页面上:在 Username 域中输入 hr ,并在 Password 域中输入 hr 。选择 Deploy password。
单击 Next 继续。 |
6. |
在 Connections 页面上,连接的默认值应如下所示: Driver: thin Host name: localhost JDBC Port: 1521 SID锛 ORCL 保留这些域的默认值。
单击 Next 继续。 |
7. |
单击 Test Connection。 如果数据库可用且连接的详细信息正确,您将看到 Status 窗口中显示 Success!。 如果发生错误,则确认这些设置是否正确。单击 Back 进行任何必要的更改,然后重新测试该连接。 如果连接成功,则单击 Finish 完成该连接。
|
8. |
这样您就创建了一个到数据库连接,为您在本教程中构建的应用程序提供数据。 随后的步骤使用该连接管理连接数据库的详细信息,以便您可以集中精力处理业务逻辑而非 JDBC 调用。 |
业务模型为应用程序提供数据访问和验证功能。当由业务模型管理数据时,总是由模型来验证数据,与客户端实现无关。它将验证和业务规则与用户界面设计进行了清晰划分。
ADF 业务组件模型提供数据访问、验证服务和业务逻辑。将业务逻辑存储在模型层中使您可将同一逻辑用于不同的应用程序客户端。建议将业务逻辑和在 ADF Swing 客户端中实现的显示逻辑分离。
在下面几步中,您将创建应用程序的 ADF 业务组件模型。
创建新的应用程序和项目 | ||
创建业务组件 |
在 JDeveloper 中,一个应用程序通常包含多个项目。
应用程序是控制结构中的最高级别。在您工作时,您会在其中看到当前所需的所有对象。在开发 Java 程序时,应用程序将追踪项目。
JDeveloper 项目是一个按逻辑将相关文件分类的组织结构。您可以将多个项目添加到应用程序中,从而轻松地组织、访问、修改和重用源代码。在 Applications Navigator 中,项目作为层次结构的第二层显示在应用程序的下面。
注意,建议您最好将模型代码和视图代码分离。在这一实战教程中,我们先创建一个 ADF 业务组件模型项目,随后再创建一个 ADF Swing 客户端项目。
在创建任何应用程序组件之前,您必须先创建应用程序和项目。为此,执行以下步骤:
1. |
单击 Applications 选项卡,返回 Applications Navigator。 右键单击 Applications 节点,从上下文菜单中选择 New Application。
|
2. |
在 Create Application 对话框中,输入应用程序名 ADFSwing。注意,当您输入应用程序名时,目录名将自动改变。 输入 oracle 作为 Application Package Prefix。 从 Application Template 下拉列表中选择值 Java Application [Swing, ADF BC]。 单击 Manage Templates... 按钮。
|
3. |
在 Application Templates 树中,为 Java Application [Swing, ADF BC] 节点选择 Rich Client View,然后在 Rich Client View 窗格中,将 Project Name 设置为 UserInterface.jpr,并将 Default Package 设置为 view。
|
4. |
在 Application Templates 树中,为 Java Application [Swing, ADF BC] 节点选择 Data Model,然后在 Data Model 窗格中,将 Project Name 设置为 DataModel.jpr,并将 Default Package 设置为 datamodel。
单击 OK。 |
5. |
返回 Create Application,并单击 OK 创建应用程序。
|
6. |
单击工具栏上的 Save All 以保存您的工作。或者,您可以从菜单中选择 File | Save All。 Applications Navigator 应类似于下图所示。
您现在准备为本教程创建应用程序组件。在随后的几个步骤中,您将为应用程序创建一个模型。 |
在本部分中,将基于数据库中的表创建 ADF 业务组件。您将使用先前创建的 hrconn 数据库连接,在 Model 项目中创建这些对象。
1. |
在 Applications Navigator 中,右键单击 Model 项目,然后从上下文菜单中选择 New。
|
2. |
在 New Gallery 中,展开 Business Tier,在 Categories 列表中选择 ADF Business Components。 在 Items 列表中选择 Business Components from Tables。
单击 OK。 |
3. |
在 Business Components Project Initialization 窗口中,从 Connection 列表中选择 hrconn 连接,然后单击 OK。
|
4. |
如果显示 Create Business Components 向导的 Welcome 页面,则单击 Next。 在 Create Business Components 向导的第一步中,检查程序包名称是否为 oracle.datamodel。 从 Schema 下拉列表中选择 HR,然后选择 Tables 选项作为 Object Type。 单击 Query,填充可用表列表。 按住 Control 键,在 Available 列表中单击选择 DEPARTMENTS 和 EMPLOYEES。 单击 Add 按钮将这两个表加入 Selected 列表中。
单击 Next 继续。 |
5. |
在 Create Business Components 向导的第二步中,单击 Add All 按钮将这两个表移入 Selected 列表。
选择 Selected 窗格中的 Updatable View Object,将 Object Name 更改为 DepartmentsVO 和 EmployeesVO 。
单击 Next。 |
6. |
在向导的第三步中,单击 Query 按钮。选择 DEPARTMENTS 表,然后单击 Add 按钮将所选项加入 Selected 列表。 将 View Name 域更改为 DepartmentsLOV 。然后单击 Next。
|
7. |
在向导的第 4 步中,将该应用程序模块命名为 HRAppModule 。
单击 Next。 |
8. |
JDeveloper 提供了数种管理组件的技术。一种是使用组件及其关系的图示。在这个步骤中,可以选择让 JDeveloper 创建一个您正在创建的组件的图示。 对于本文的示例,我们将跳过这个步骤。单击 Next 继续。
|
9. |
Business Components 向导的最后一页显示了单击 Finish 时创建的对象和关系。 单击 Finish 完成向导。
|
10. |
展开 DataModel 节点,Applications Navigator 应该显示如下:
|
您将在下面几步中创建一个 ADF Swing 主从表单:
创建主体(Master)部分 | ||
创建从属(Detail)部分 | ||
将组合框加入从属属性 |
1. |
创建本教程的应用程序时,您创建了两个项目:DataModel 和 UserInterface。DataModel 项目包含用作应用程序业务模型的 ADF 业务组件。UserInterface 项目包括应用程序 View 部分,它定义了用户界面组件。 在 Applications Navigator 中,折叠 DataModel 节点,Applications Navigator 应当显示如下:
|
2. |
右键单击 Applications Navigator 的 UserInterface,然后从上下文菜单中选择 New,以创建 ADF Swing 表单。
|
3. |
展开 Client Tier 节点,从 ADF Swing Category 选择 Empty Form 创建一个 JFrame。
单击 OK。 注:Empty Form 用于创建空 Java 客户端框架。向导生成的框架将包括 ADF Swing 特有的应用程序引导代码。该代码将初始化 ADF Swing 应用程序,并将其绑定到访问 ADF 业务组件的 ADF 绑定层。Swing 开发人员不需要更改这一代码。 |
4. |
选择新 Empty Form,打开 Create ADF Swing Empty Form 向导。单击 Next 跳过该向导的 Welcome 页面(如果显示该页面)。
|
5. |
将新表单命名为 MDForm。 接受其他默认项,单击 Next 继续。
单击 Finish。 |
6. |
Empty Form 在 Design 编辑器中打开。
|
7. |
选择默认生成的 navigation bar,再选择 delete 将其删除。 注:默认的导航栏是通用型导航栏,它可用于任何加入到 Java 面板中表或表单。在本应用程序中,您要专门创建两个用于该面板中的特殊数据控件的导航栏。
|
8. |
点击表单顶端,选择 Swing frame 打开 Property Inspector,设置表单的 Title 为 Swing Demo。
|
9. |
单击框架的中间,选择 DataPanel。将 Property 窗格中的布局属性设为 FormLayout。 注:FormLayout 将组件置于由于行和列组成的网格中 — 组件可以跨多行或多列。
在新的对话框中,设置以下属性 — Number of rows 8 - Number of columns 3 - 点击 OK。
新表单应如下所示:
|
10. |
打开 Data Controls 选项板,将 DepartmentsVO1 拖放到左上端的单元格中。
在上下文菜单中选择 Add Child > Navigation Bar 选项创建了 NavigationBar,但这一个特定于 DepartmentsVO。
选择 Scrollbar,拖拽最右边的 蓝色标记,使滚动条跨 1 到 3 列。
|
11. |
向表单中加入所选的数据绑定列。 在 Data Controls Palette 中,展开 DepartmentsVO1 节点,选择 DepartmentId,将它拖放到第 1 行、第 2 列的单元格中(在滚动条的下面)。
在上下文菜单中选择 Add Child > Text Field
注:对于 Data Control Palette 中的基本 UI 组件,您可以在其上设置 ADF 属性绑定。使用 TextField 将纯文本显示为一行。 |
12. |
针对 DepartmentName 和 LocationId 重复前一步骤。表单应如下所示:
|
13. |
为每一个文本域添加相应默认标签。 在 JDeveloper 中 打开 Component Palette ( Ctrl+Shift+P),选择 ADF Swing Controls 库。将一个 JULabel 组件拖放到 DepartmentId 文本域前的第一列中。
|
14. |
重复前一步骤将 JULabel 添加到其他两个文本域的前面。
|
15. |
右键单击左上端的 JULabel,从右键菜单中选择 Create Binding > Label For 选项。
注:可以将 JULabel 控件绑定到在业务组件实体对象或视图对象(显示属性)上定义的元数据或 ADF 元数据(结合 EJB、POJO、或 Web 服务控件来定义显示属性)。 |
16. |
在 Attribute Binding Editor 中,展开 HRAppModuleDataControl 节点,选择 DepartmentsVO1,然后选择 DepartmentId 属性。
单击 OK。 |
17. |
重复 15 到 16 步 ( Create Binding > Label For) 将 JULabel2 映射到 DepartmentName,将 JULabel3 映射到 LocationId。
注:您可以对标签进行右对齐操作,先一次选中多个标签(CTRL + 选中标签),然后单击工具栏中的 Right Align 图标。 |
18. |
从 Data Controls 选项板中将 DepartmentsVO1 拖放到第 3 列、第 1 行。在上下文菜单中,选择 Add Child > Scrollbar。
|
19. |
拖拽 蓝色标记,使滚动条跨 1-3 行
|
20. |
右键单击 scroll bar 组件,从上下文菜单中选择 Column Properties。
将大小设置为 Constant Size,值为 12 个 对话框单位。
单击 OK。 |
21. |
右键单击一个标签(第一列),从上下文菜单中选择 Column Properties。将 Resize 行为设为 None。
|
单击 JDeveloper 菜单栏上的 Save All 图标,或从菜单中选择 File > Save All。 |
现在已经按部门构建了表单的主体部分,接下来要按员工添加从属部分。
以下几个步骤引导您完成该测试过程。
1. |
从 Component Palette 的 Swing Containers 库中将 JScrollPane 添加到第 1 列、第 5 行的单元格中。
拖拽 蓝色标记使其跨 6-7 行和 1-3 列。 注:JScrollPane 提供了组件的可滚动式视图。当屏幕大小有限时,可以使用滚动窗格显示一个大的组件或可动态更改大小的组件。 |
2. |
选中 JscrollPane 后,按工具栏中的 Grow Row 图示。
|
3. |
从 DataControls Palette 中将 EmployeesVO3 拖放到 JScrollPane。在上下文菜单中,选择 Add Child > Table
MDForm 应如下所示:
|
4. |
在 Applications Navigator 中,选择 MDFormPageDef.xml 节点,打开 Structure 窗格。
|
5. |
展开 binding 节点,双击 DepartmentsVO1EmployeesVO3 打开绑定编辑器。
在 Display Attributes 窗格中,选择除 EmployeeId- FirstName- LastName- Email- DepartmentId 外的所有列,然后单击 Remove 按钮移走 Available Attributes 窗格中的选择项。
单击 OK。 |
6. |
关闭并保存 MDForm.java,然后在可视化编辑器再次打开 MDForm.java 查看变化。MDForm 应如下所示 :
|
7. |
从 Data Control Pane 中将 EmployeesVO3 拖放到面板中的第 4 行。在上下文菜单中,选择 Add Child > NavigationBar 选项。
拖拽 蓝色标记,使其跨全部 3 个列。
|
8. |
右键单击 FormLayout 中 第 2 列的一个组件,从上下文菜单中选择 Column Properties。
在 Column Properties 对话框中,将 Resize 的 Grow 属性设为 1。
|
9. |
右键单击 Applications Navigator 中的 MDForm.java 节点,并选择 Run 运行它。
|
10. |
测试导航栏和主体部分中的滚动条。测试从属部分中的导航栏。
|
11. |
完成操作后关闭此面板。 单击 JDeveloper 菜单栏上的 Save All 图标,或从菜单中选择 File > Save All。 |
现在您已经创建了 Swing 主从表单,接下来要为从属表单的 DepartmentId 创建了一个列表框,以显示 Department Name 来代替 DepartmentId。列表框使用户可以选择多个选项中的一个。
要为 DepartmentId 创建一个列表,执行以下步骤:
1. |
在 Applications Navigator 中选择 MDFormPageDef.xml 节点,在 Structure 中双击 DepartmentsVo1EmployeesVO3 打开绑定编辑器。
|
2. |
选择 Attributes Properties 选项卡,将 DepartmentId 的编辑器属性设置为 Combo Box。然后按 [...] Edit 按钮创建 Combo Box 绑定。
单击 Editor Properties 窗口中的 Create 按钮
|
3. |
在 List Binding Editor 对话框中,选择 HRAppModuleDataControl.EmployeesVO3 作为 Base Data Source。 按 List Data Source 的 Add 按钮,展开 HRAppModuleDataControl 节点,选择 DepartmentsLOV1
在属性映射中,将 Base Data Source Attribute DepartmentId 映射到 List Data Source Attribute DepartmentId。
将 DepartmentName 的属性设置为显示。将 No Selection Item 域设为 Selection Required
点击 OK 关闭所有编辑器。 |
4. |
重新运行该应用程序,测试该 组合框。
|
5. |
单击一个从属项的 DepartmentId 列,弹出 Department 值列表。
|
现在您已经构建了 Swing 主从表单,下面您要创建一个 Edit 表单来显示与所选从属记录相关的其他信息。
以下几个步骤引导您完成该测试过程。
1. |
在 Applications Navigator 中,右键单击 View 节点,从上下文菜单中选择 New 选项。
|
||||||
2. |
在 ADF Swing 类别的 New Gallery 中,选择 Empty Panel 项。
单击 OK。 |
||||||
3. |
选择 Next 跳过 Create ADF Swing 对话框的 Welcome 页面,在第 1 步中输入 EmployeeEdit 作为面板名称。
单击 Next,然后单击 Finish。 |
||||||
4. |
EmployeeEdit 面板在 Design 编辑器中打开。
|
||||||
5. |
从 DataControls Palette 中将 EmployeesVO3 拖放到新面板中,从上下文菜单中选择 Add Edit Form 选项。
|
||||||
6. |
在打开的对话框中,将 CommissionPct 属性设为呈现为 Combo Box。
单击 OK。 |
||||||
7. |
选择 EmployeeEdit Design 视图,重新打开它查看变化。
|
||||||
8. |
调整 EmployeesEdit 表单的大小,显示编辑表单中的所有属性。
|
||||||
9. |
双击 Applications Navigator 中的 PanelEmployeesVO3Helper.java 节点,在编辑器中打开设计视图。
|
||||||
10. |
选择 panel,将布局属性设为 Vertical Flow Layout
|
||||||
11. |
选择任一编辑表单标签栏,右键单击选择 Column Properties 选项。
在 Column Properties 对话框中,将 Resize 属性设为 none。
|
||||||
12. |
为 CommissionPct 选择 combo box 组件,从上下文菜单中选择 Edit ADFm Binding Properties。
|
||||||
13. |
在 List Binding Editor 中创建一个 Fixed List,将 Base Data Source 属性设置为 CommissionPct,添加以下值: .10 .15 .20 .25 .30 .35 .40 .45 .50 .55 .60 .65 .70 .75 将 No Selection Item 设为 Include Blank Item
单击 OK 关闭对话框。 |
||||||
14. |
选择面板中的 navigation bar,打开 Property Inspector。设置以下属性:
|
||||||
15. |
在设计编辑器中打开 MDForm,从 Applications Navigator 中将 EmployeesEdit 面板拖放到 MDForm 面板中的 最后一行、 第一列。
|
||||||
16. |
在新对话框中,选择 Display Panel in JDialog,然后选择 Invoke JDialog from Button
在 Select Option 中选择 Display Panel in JDialog > Invoke JDialog From Button。单击 OK。 |
||||||
17. |
将按钮放大至列宽。在 Inspector 窗格中,将 text 属性更改为 Edit
|
||||||
18. |
双击该 按钮导航到 jButton1_actionPerformed 方法,并将对 dialog.setSize() 的调用更改为调用 dialog.setSize(400,500) ,以便有足够大小显示 EmployeeEdit 表单。
|
||||||
19. |
选择 Run 运行 MDForm,从主体表单导航到带许多记录的从属表单。
按任一从属行中的 Edit 按钮,显示所选记录的 EmployeeEdit 表单。
|
||||||
20. |
测试 CommissionPct 的 Combo Box。
|
||||||
完成后关闭 Application 窗口。 您已经顺利完成本 ADF Swing 教程。 |
在本教程中,您使用 Oracle JDeveloper、ADF 业务组件和 ADF Swing 创建了一个简单的应用程序。您学习了如何:
使用 ADF 业务组件构建业务模型 | ||
创建 ADF Swing 主从表单 | ||
创建 ADF Swing 编辑表单 |
热门下载 | ||
更多融合中间件下载 | ||