使用NetBeans将GUI连接到Derby数据库

2024-01-18 02:38

本文主要是介绍使用NetBeans将GUI连接到Derby数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本教程指导您如何将名为 ContactEditor 的应用程序的 GUI 连接到 Derby 数据库。在此过程中,您将向 GUI 添加数据敏感的 JDBC 组件,使该程序能够与雇员数据库交互。

在本教程中,您将学会如何:

l      使用 GUI Builder 界面

l      连接两个 GUI 窗口

l      添加和编辑 JDBCRowSet

l      添加数据模型

l      GUI 连接到 Derby 数据库

l      将数据绑定到 UI 组件

l      UI 组件连接到应用程序逻辑

本教程大约需要 30 分钟完成。

请注意本教程引用了名为 GUI DB Exercise Initial 的项目作为样例,供您在使用这些步骤时参考。另请注意,归档文件中的 GUI DB Exercise Final 项目显示了完成的应用程序。

入门
GUI Builder Quickstart 教程中,我们致力于为 ContactEditorUI.java 应用程序构建名为 ContactEditorUI 的对话框。在本教程中,我们将以前创建的 ContactEditorUI GUI 窗体和该应用程序 UI 的主(父)窗口都连接到 Derby 数据库。请注意,尽管本教程中的图片说明的是 Macintosh OS-X 上的过程,但在其他支持平台(如 Windows Solaris)上,步骤几乎相同。

要成功完成本教程,您必须已经安装并正在运行 IDE 包含的 Derby 数据库服务器。请注意,到 NetBeans IDE 5.5 Beta 版时,包含的数据库就不再叫作 Derby 了,而是被称为 Java DB。您还需要将包含在样例项目中的必要的支持类(在 Project 窗口中可见)编译进项目。有关安装和配置 Derby 以用于 NetBeans 的更多信息,请参见 NetBeans Derby tutorial

最后,您还必须已经创建了 contact_database 并将 User Name Password 设置为 nbuser。还要向数据库添加必要的字段,添加的方法是使用 Create Table UI 或执行以下 SQL 语句:

    CREATE TABLE "CONTACTS"
    (
    "ID" INTEGER not null primary key,
    "FIRST_NAME" VARCHAR(50),
    "LAST_NAME" VARCHAR(50),
    "TITLE" VARCHAR(50),
    "NICKNAME" VARCHAR(50),
    "DISPLAY_FORMAT" SMALLINT,
    "MAIL_FORMAT" SMALLINT,
    "EMAIL_ADDRESSES" VARCHAR(1000)
    )
    

请注意,如果您使用 SQL 命令而不是 Create Table UI 创建表,要看到 Contacts 表,您需要在 Runtime 窗口刷新 Tables 节点。

注意:要成功完成本教程,您必须在 JDK 5 上运行 NetBeans IDE 5.0

添加数据模型


因为应用程序主窗口 GUI 已经准备妥当,我们可以直接跳到添加数据敏感组件这一步,它使我们能够与数据库中的数据交互。在本部分,我们将添加数据模型以确保数据在正确的窗体中向 UI 显示。

添加 JDBCRowSet

因为我们需要的 JDBCRowSet 已经包含在 GUI DB 示例项目中,我们只需将它添加到应用程序 GUI 中即可。而包含的 RowSets 已经有了 BeanInfos,所以我们可以像使用 IDE 中的其他组件一样使用它们,在 Properties 窗口中显示它们的属性。因为只打算使用这个类一次,所以不需要为了将它添加到窗体而将 JDBCRowSet 安装到 Palette。但是如果想重复使用某个类,这样做就很有价值了,我们为了节省时间和精力只是复制粘贴它。

添加 JDBCRowSet 到窗体:

1.       Projects 窗口中,右键单击 JDBCRowSet.java 节点并从弹出菜单中选择 Copy

2.       将它粘贴到设计区域的任意位置。

IDE JDBCRowSet 添加到窗体并且表示行设置的节点出现在 Inspector 窗口中。

请注意,Inspector 窗口中的节点是在 Other Components 节点内添加的。如果在试图粘贴行设置时收到错误消息,则编译项目,然后再试。

设置 JDBCRowSet 的属性

现在需要编辑 JDBCRowSet 属性,这样它就能引用我们先前创建的 Contacts 数据库了。还需要设置驱动程序及其使用的路径并提供它进行连接时需要的密码和用户名。

编辑 JDBCRowSet 的属性:

1.       Inspector 窗口(不是 Projects 窗口)中选择 JDBCRowSet1 节点。

2.       Properties 窗口中,为命令属性输入 select * from contacts

3.       为驱动程序属性输入 org.apache.derby.jdbc.ClientDriver

4.       url 属性输入 jdbc:derby://localhost:1527/contact_database

5.       为密码属性输入 nbuser

6.       为用户名属性输入 nbuser

添加数据模型

现在我们需要添加数据模型,它将成为应用程序与数据库之间的一层,并封装数据访问,为访问和修改数据提供逻辑。示例项目中再次提供了必要的 ContactsModel 类,所以我们只需将它添加到应用程序。包含这样一个类可以在不迫使 GUI 发生变化的情况下更改数据模型。

向窗体添加数据模型:

1.       Projects 窗口中,右键单击 ContactsModel.java 节点并从弹出菜单中选择 Copy

2.       将它粘贴到设计区域的任意位置。

IDE ContactModel 添加到窗体并且表示行设置的节点出现在 Inspector 窗口中的 Other Components 节点内。

改变数据模型的变量名:

1.       Inspector 窗口中,右键单击 contactsModel1 节点并从弹出菜单中选择 Change Variable Name

2.       在显示的 Rename 对话框中,输入新变量名 contactsModel 并单击 OK

设置数据模型的 rowSet 属性:

1.       Inspector 窗口中,选择 contactsModel 节点。

2.       Properties 窗口中,单击 rowSet 属性的省略号按钮 (...)

3.       在显示的编辑器中,选择 Get Parameter From 窗格中的 Bean 单选按钮。

4.       Select Bean 组合框中,选择 jDBCRowSet1

5.       单击 OK 退出对话框。

IDE 设置窗体的 contactsModel 数据模型以使用 jDBCRowSet

将数据库绑定到 UI


为了让 GUI 与存储在数据库中的联系人信息交互,需要将数据绑定到组件,这样才能显示这些数据并允许用户与它进行交互。在本部分,我们开始将 GUI 连接到 JDBC 组件,启用与数据库的交互。

设置 JTable RowSet 模型

为了使 GUI JTable 能够正确显示联系人数据,我们需要设置它以使用提供的 RowSetTableModel 类。还需要将 RowSetTableModel 指向先前添加的 JDBCRowSet,使它能够向 JTable 自身转发列信息和数据。最后,我们将编辑 rowSetTableModel1 实例,仅让那些我们想显示的列在 GUI 主窗口中可见。

向窗体添加 RowSetTableModel

1.       Projects 窗口中,右键单击 RowSetTableModel.java 节点并从弹出菜单中选择 Copy

2.       将它粘贴到设计区域的任意位置。

设置表模块的 rowSet 属性:

1.       Inspector 中,选择 rowSetTableModel1 节点。

2.       Properties 窗口中,单击省略号按钮 (...) 打开 rowSet 属性编辑器。

3.       Get Parameter From 窗格中,选择 Bean 单选按钮。

4.       Select Bean 组合框中,选择 jDBCRowSet1

5.       单击 OK 退出对话框。.

设置 JTable 的模型属性:

1.       Inspector 中,选择 JTable。请注意,当您在窗体中选择 JTable 时,JScrollPane 组件在 Inspector 窗口中被高亮显示并且可以在 Properties 窗口中编辑其属性(不是 JTable 的属性)。

2.       Properties 窗口中,单击省略号按钮 (...) 打开模型属性的编辑器。

3.       在显示的模型编辑器中,在 Select Mode 组合框中选择 Form Connection

4.       选择 Bean 单选按钮并在 Component 组合框中选择 rowSetTableModel1

5.       单击 OK 关闭编辑器。

要决定表的哪些列在运行时可见,需要明确设置它们。为此,我们需要调整 rowSetTableModel1 的属性。

设置表列的可见性:

1.       Inspector 中,选择 rowSetTableModel1 节点。

2.       Properties 窗口中,单击省略号按钮 (...) 打开 visibleColumns 属性编辑器。

3.       在显示的编辑器中,在 Item 字段输入以下列名,每次输入一个并单击 Add

m         NICKNAME

m         FIRST_NAME

m         LAST_NAME

4.       单击 OK 退出对话框。.

IDE 设置窗体的 JTable 以显示指定的列,并且列标题按它们被添加的顺序出现在窗体中。

设置主窗口关闭行为

在应用程序窗口关闭时,要释放驻留在模型中的各种资源,我们还需要明确指定预期的行为。在本部分,我们将为应用程序主窗口和 Details 对话框,设置控制此行为的事件动作。

为主窗口 Close 按钮编辑事件动作:

1.       右键单击 Close 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行(它应显示为 //TODO add your handling code here),在 editContactActionPerformed 方法主体中添加以下代码:


    contactsModel.dispose(); // releases resources held by the model (like DB connection)
    System.exit(0);  // exists the application

3.       单击 Design 按钮,返回 GUI Builder

为主窗口编辑事件动作:

1.       Inspector 中,右键单击 JFrame 容器并选择 Events > Window >windowClosing

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:

    contactsModel.dispose(); // releases resources held by the model (like DB connection)
    System.exit(0);  // exists the application

3.       再次单击 Design 按钮,返回 GUI Builder

添加按钮事件处理程序

为了使主窗口中的各种按钮引起预期的行为,必须给它们设置动作。本部分正是要完成这一工作,通过定义它们必需的事件处理程序触发相应的事件。

Edit 按钮添加事件处理程序:

1.       右键单击 Edit 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:

3.       将以下方法添加到 contactEditor 类主体的代码中(在或大约在 346 行)。

private void showDetailDialog(boolean inserting) {
    contactsModel.setInsertMode(inserting);
    firstNameField.setText(contactsModel.getFirstName());
    lastNameField.setText(contactsModel.getLastName());
    titleField.setText(contactsModel.getTitle());
    nicknameField.setText(contactsModel.getNickname());
    displayFormat.setSelectedIndex(contactsModel.getDisplayFormat());
    emailField.setText("");
    switch (contactsModel.getMailFormat()) {
    case 0: htmlChoice.setSelected(true); break;
    case 1: plainTextChoice.setSelected(true); break;
    case 2: customChoice.setSelected(true); break;
    }
    javax.swing.DefaultListModel listModel = new javax.swing.DefaultListModel();
    Object[] mails = contactsModel.getEmails();
    for (int i=0; i
    emailsList.setModel(listModel);
    details.pack();
    details.setVisible(true);
}

IDE Edit 按钮添加侦听器使该按钮能够在单击时与 contactsModel 和数据库交互,

Add 按钮添加事件处理程序:

1.       右键单击 Add 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:


   showDetailDialog(true);

                

Remove 按钮添加事件处理程序:

1.       右键单击 Remove 按钮并选择 Events > Action > actionPerformed

2.       在源编辑器中,选择光标所在的行。然后添加以下代码:



    contactsModel.removeContact();

              
设置表的选择模型

现在是设置表的选择模型的时候了,它将侦听模型中属性的更改并决定是否可以对选定的联系人进行编辑。请注意,对于本教程,ContactsModel 实现允许编辑或删除任何选定的联系人。

设置表的选择模型:

1.       Inspector 窗口中,展开 JScrollPane1 节点并选择 JTable

2.       Properties 窗口中,单击 selectionModel 属性的省略号按钮。

3.       在显示的编辑器中,选择 Property 单选按钮并单击省略号按钮。

4.       在打开的 Select Property 对话框中,在组合框中选择 contactsModel。然后选择 Properties 窗格中的 contactSelection

5.       单击 OK 退出对话框。

contactsModel Edit Remove 按钮连接:

1.       右键单击设计区域的 Edit 按钮并从弹出菜单中选择 Events > PropertyChange > propertyChange

2.       在源编辑器中光标所在的行,复制并粘贴以下代码。



    editContact.setEnabled(contactsModel.isEditingEnabled());

                    

3.       Remove 按钮重复此步骤,但这次使用以下代码:



    removeContact.setEnabled(contactsModel.isRemovalEnabled());

          

IDE 设置这些按钮以启用对数据库联系人的编辑和删除。




这篇关于使用NetBeans将GUI连接到Derby数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/617893

相关文章

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

MySQL中的分组和多表连接详解

《MySQL中的分组和多表连接详解》:本文主要介绍MySQL中的分组和多表连接的相关操作,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录mysql中的分组和多表连接一、MySQL的分组(group javascriptby )二、多表连接(表连接会产生大量的数据垃圾)MySQL中的

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格