生成 Java 桌面数据库应用程序.docx
《生成 Java 桌面数据库应用程序.docx》由会员分享,可在线阅读,更多相关《生成 Java 桌面数据库应用程序.docx(17页珍藏版)》请在冰点文库上搜索。
生成Java桌面数据库应用程序
生成Java桌面数据库应用程序
本教程介绍如何创建可用于访问和更新数据库的桌面Java应用程序。
本教程将利用NetBeansIDE中对以下技术的支持:
∙Java持久性API(JPA)-帮助使用Java代码与数据库进行交互。
∙Bean绑定(JSR-295)-为不同的JavaBeans组件提供一种彼此同步属性值的方法。
例如,可以使用Bean绑定来使JTable可视组件中单元格的值与实体类中的字段值保持同步。
(而实体类又表示数据库表。
)
∙Swing应用程序框架(JSR-296)-为快速创建桌面应用程序提供了一些有用的模块。
我们将创建一个数据库CRUD(创建、读取、更新、删除)应用程序,其中包含一个用于对数据进行可视化(汽车设计预览)的定制组件。
本教程大量采用基于早期内部开发版本的IDE的截屏视频。
某些用户界面从演示制作完成后就发生了变化,因此您可能会注意到本教程与演示之间存在一些差异。
可以立即查看演示(大约9分钟)或下载演示的zip文件。
预计时间:
45分钟
目录
∙设置数据库
∙启动服务器并创建数据库
∙连接数据库
∙创建应用程序
∙运行生成的应用程序
∙检查应用程序的已生成部分
∙添加其他控件
∙将控件与表中的值绑定
∙设置定制组件
∙生成并部署应用程序
∙后续步骤
要学完本教程,您需要具备下表所列的软件和资源。
软件或资源
要求的版本
NetBeansIDE
版本6.9
JavaDevelopmentKit(JDK)
版本6或
JavaDB数据库服务器(JavaDB包含在JDK6中)
汽车数据库SQL脚本
CarPreview项目
设置数据库
开始在IDE中创建桌面CRUD(创建、读取、更新、删除)应用程序之前,应已将IDE连接到应用程序要使用的数据库。
提前设置此连接,您便可以利用IDE中的自动将数据库绑定到应用程序这一功能。
在本教程中,我们提供了使用JavaDB数据库的说明,因为存在一个便于从IDE启动和停止JavaDB数据库服务器的接口。
但是,可以毫不费力地使用其他的数据库服务器。
首先,验证是否在IDE中注册了JavaDB。
在很多情况下,JavaDB是自动在IDE中注册的(例如当您在IDE中注册GlassFish应用程序服务器时,或者在JDK6中运行时)。
如果JavaDB未在IDE中注册,则手动将它注册。
要验证JavaDB是否已在IDE中注册,请执行以下操作:
1.打开“服务”窗口。
2.右键单击“数据库”>"JavaDB"节点,然后选择“属性”。
如果JavaDB已注册,则“Java 数据库安装”和“数据库位置”这两个字段均已填写。
如果JavaDB未注册,则填写以下两个字段:
oJava数据库安装。
输入指向数据库服务器的路径。
o数据库位置。
输入希望存储数据库的文件夹。
3.单击“确定”。
启动服务器并创建数据库
在向IDE注册JavaDB之后,可以轻松地启动和停止数据库服务器,以及创建新数据库。
要在IDE中启动数据库服务器,请执行以下操作:
∙在“服务”窗口中,右键单击“数据库”>"Java DB",然后选择“启动服务器”。
如果还没有为数据库设定位置,则会出现“设置数据库位置”对话框。
输入数据库服务器用于存储数据库的位置。
如果愿意,可以在该位置创建新文件夹。
服务器启动之后,“JavaDB数据库进程”标签会在“输出”窗口中打开,并显示类似于以下内容的消息:
ApacheDerbyNetworkServer-10.2.2.0-(485682)startedandready
toacceptconnectionsonport1527at2007-09-0510:
26:
25.424GMT
创建数据库,请执行以下操作:
1.在“服务”窗口中,右键单击“数据库”>"Java DB",然后选择“创建数据库”。
2.对于“数据库名称”文本字段,键入car_database。
还要将“用户名”和“口令”设置为nbuser。
3.单击“确定”。
连接数据库
到目前为止,我们已成功启动了数据库服务器,并创建了一个数据库。
但是,我们还需要连接新数据库,然后才能开始在IDE中使用该数据库。
要连接car_database数据库,请执行以下操作:
1.切换到“服务”窗口(Ctrl+5),然后展开“数据库”节点查看新数据库。
2.右键单击“数据库连接”节点(jdbc:
derby:
//localhost:
1527/car_database[NBUSER上的nbuser]),选择“连接”。
现在,连接节点图标应该完全显示(
),这表示连接已成功。
3.展开连接节点,右键单击其“表”子节点,然后选择“执行命令”。
4.复制car.sql文件的内容,并将其粘贴到源代码编辑器的“SQL命令1”标签中。
这是SQL脚本,该脚本将使用关于汽车的数据填充数据库。
5.在源代码编辑器工具栏中,单击“运行SQL”按钮(
)以运行该脚本。
创建应用程序
1.选择“文件”>“新建项目”。
2.在向导的第一个面板中,展开"Java"类别,并选择“Java桌面应用程序”模板。
单击“下一步”。
“Java桌面应用程序”模板提供了可视应用程序的许多基本项,包括基本菜单项和命令。
3.在向导的“名称和位置”页中,执行以下操作:
1.在“项目名称”字段中,键入CarsApp。
此字段的值会为“项目”窗口中的项目设置显示名称。
2.选中“设置为主项目”复选框。
3.(可选)编辑“项目位置”字段来更改项目meta数据的位置。
4.(可选)选中“使用专用文件夹存储库”复选框,并指定库文件夹的位置。
有关此选项的详细信息,请参见共享项目库。
5.在“选择应用程序Shell”字段中,选择“数据库应用程序”。
6.单击“下一步”。
4.在向导的“主表”页中,选择CAR数据库的数据库连接。
数据库的列表应该类似于以下内容:
jdbc:
derby:
//localhost:
1527/car_database[NBUSER上的nbuser]
5.填写数据库的口令(nbuser),并选中“在此会话期间记住口令”复选框。
在建立与数据库的连接后,“数据库表”字段应该显示CAR,“要包含的列”列表应该包含CAR数据库的10个列的名称。
目前,我们将在应用程序中只使用其中的5个列名称。
6.选择后五个列名称(以SUN_ROOF开头,以MODERNNESS结尾),然后单击<按钮将它们移到左列中。
单击“下一步”。
7.在“详细信息选项”面板中,单击“完成”。
然后,向导将生成一个带有表和数据库连接的基本用户界面。
IDE生成项目和代码可能需要几秒钟的时间。
运行生成的应用程序
此时,已有了一个正在运行的基本应用程序,其中包含的图形用户界面(GUI)具有以下功能:
∙查看和修改CAR数据库中五个列值的功能。
∙基本菜单项。
∙会话间窗口状态的持久性。
在关闭应用程序时,系统将记住窗口的位置和大小。
这样在重新打开应用程序时,窗口会在关闭它时所在的同一个位置打开。
∙“关于”对话框,可以轻松地对它进行定制。
∙.properties文件,其中包含用户界面中的标签。
使用.properties文件是使代码逻辑与出现在应用程序用户界面中的文本分离的好方法。
此外,这样的分离有利于简化程序的本地化。
要查看已内置到应用程序中的一些功能,请执行以下操作:
1.右键单击项目节点,然后选择“运行”。
几秒钟后,应用程序将启动并显示一个名为"DatabaseApplicationExample"的窗口。
此窗口包含一张表和若干可用于编辑CAR数据库的控件。
2.选择表中的第一条记录(关于Acura)。
3.选择"Price"文本字段,并将现有值替换为46999。
然后按Enter键。
此时表中应显示更新后的值。
(但是,在单击"Save"前,该值不会反映到数据库中。
)
同样地,可以更新表中的其他任何值。
4.单击"New"创建一条新记录。
然后填写每个字段(Make,Model,Price,BodyStyle,Color)的值。
例如,可以填写Trabant、Classic、1000、wagon和blue。
单击"Save"将该条目保存到数据库中。
5.单击"DatabaseApplicationExample"标题栏,并将应用程序拖到屏幕上的其他位置。
6.单击"DatabaseApplicationExample"窗口的左边框并将其向左拖动以增大窗口。
7.在"DatabaseApplicationExample"菜单栏中,选择"File">"Exit"。
8.在IDE中,右键单击项目节点,然后选择“运行”项目。
此时,"DatabaseApplicationExample"窗口将打开,其大小和所在位置与关闭应用程序时相同。
检查应用程序的已生成部分
主表(JTable组件)与数据库之间的连接是结合以下机制(所有这些机制都是由IDE生成的)进行处理的:
∙Car.java实体类-用于在CAR数据库表中进行读写数据的操作。
实体类是一种特殊的类,使用它可以通过Java代码与数据库交互。
实体类使用Java标注将类字段映射到数据库列。
∙META-INF/persistence.xml文件-定义数据库与实体类之间的连接。
此文件也称为持久性单元。
∙使用Bean绑定连接实体类的属性与JTable组件的属性。
Bean绑定是一项基于JSR295的新技术,该技术可能会包含在将来的JavaSE发行版中。
∙entityManager、query和list对象-它们在CarsView类中定义,并且在“检查器”窗口中列出。
oentityManager(实体管理器)对象用于在已定义的持久性单元作用域内检索和提交数据。
oquery(查询)对象定义如何从实体管理器检索数据收集。
可以通过在“检查器”窗口中选择查询对象并更改属性表单中的query属性来更改查询对象的工作方式。
query属性使用JPA查询语言。
olist(列表)对象是保存查询到的数据的可观察集合。
可观察的集合是一种特殊的集合,可以在其中放置侦听程序以查明对集合做出更改的时间。
使用“检查器”窗口和属性表单,可以执行以下步骤以了解如何将JTable绑定到数据:
1.在“检查器”窗口中,选择"mainPanel[JPanel]">"masterScrollPane[ScrollPane]">"masterTable[JTable]"节点。
然后在“属性”窗口中单击“绑定”标签。
2.查看"elements"属性,确认其与列表已绑定。
3.单击省略号[...]按钮打开“绑定masterTable.elements”定制器,可以在其中进一步定制表与数据库之间的绑定。
例如,可以查看定制器可用来指定要绑定哪些表列。
除了属性表单中的“绑定”类别外,还可以使用上下文菜单中的“绑定”菜单。
添加其他控件
现在,我们要将最初排除的某些属性的控件添加到窗体中。
除了使用表外,我们将添加JSlider组件(对于tiresize和modernness属性)和JCheckbox组件(对于sunroof和spoiler)。
执行以下步骤来添加其他组件:
1.添加第一个滑块,方法是单击“组件面板”窗口中的“滑块”按钮,然后单击"New"按钮正上方的窗体。
在单击该窗体以插入滑块之前,请确保未显示水平槽式基准线。
这些基准线指示滑块将插入字段或按钮所在的同一行。
请参见下图以了解应将滑块拖到窗体中的哪个位置。
注意:
如果将组件放到了非预期的位置,并因而导致不需要的布局更改,可以使用“撤消”命令来撤消更改。
选择“编辑”>“撤消”,或按Ctrl-Z组合键。
2.如有必要,向左拉伸滑块以将它与文本字段组件的左边对齐。
3.向右拉伸滑块使其宽度相当于整个窗体的宽度。
4.在滑块的左边添加一个标签,并将其文本设置为TireSize。
(单击标签使其可编辑。
)
5.在第一个滑块下方添加另一个滑块,并根据需要调整其宽度和位置。
6.在"TireSize"标签下方添加另一个标签,并将其文本设置为Modernness。
7.在这两个滑块下添加两个复选框。
将其文本分别设置为Spoiler和SunRoof。
(确保显示文本可编辑,方法是单击复选框一次,暂停,然后再次单击该复选框。
还可以右键单击复选框,并选择“编辑文本”。
)
窗体应该类似于如下所示的屏幕快照。
将控件与表中的值绑定
现在,我们将使用Bean绑定功能将表单元格中显示的值绑定到已添加的控件状态。
这将使您能够通过使用滑块和复选框来更改表中单元格的值。
要将滑块与其对应的表元素绑定,请执行以下操作:
1.在窗体中,右键单击"TireSize"滑块,然后选择“绑定”>"value"。
2.在“绑定”对话框的“绑定源”下拉列表中,选择"masterTable"。
3.在“绑定表达式”下拉列表中,选择"selectedElement">"tiresize"节点。
4.在窗体中,右键单击"Modernness"滑块,然后选择“绑定”>"value"。
5.在“绑定”对话框的“绑定源”下拉列表中,选择"masterTable"。
6.在“绑定表达式”下拉列表中,选择"selectedElement">"modernness"。
要将复选框与其对应的表元素绑定,请执行以下操作:
1.在窗体中,右键单击"Spoiler"复选框,然后选择“绑定”>"selected"。
2.在“绑定”对话框的“绑定源”下拉列表中,选择"masterTable"。
3.在“绑定表达式”下拉列表中,选择"selectedElement">"spoiler"。
4.单击“确定”退出“绑定”对话框。
5.在窗体中,右键单击"SunRoof"复选框,然后选择“绑定”>"selected"。
6.在“绑定”对话框的“绑定源”下拉列表中,选择"masterTable"。
7.在“绑定表达式”下拉列表中,选择"selectedRow">"sunRoof"。
8.单击“确定”。
现在,应该能够使用滑块和复选框来更改数据库条目。
要验证滑块和复选框是否有效,请执行以下操作:
1.打开“服务”窗口。
2.确保IDE已连接到数据库,方法是右键单击“数据库”>"jdbc:
derby;//localhost:
1527/car_database",并选择“连接”。
3.右键单击“数据库”>"jdbc:
derby;//localhost:
1527/car_database">“表”>"CAR"节点,并选择“查看数据”。
4.查看第一条记录的SUN_ROOF、SPOILER、TIRE_SIZE和MODERNNESS值。
5.选择“运行”>“运行主项目”来执行应用程序。
正在运行的应用程序应该类似于如下所示的屏幕快照。
6.在正运行的应用程序中,选择第一条记录。
7.移动滑块并更改复选框选择。
8.单击“保存”将更改保存到数据库中。
9.在“服务”窗口中,再次使用“查看数据”命令。
数据库中的值应反映所做的更改。
设置定制组件
为了运用更加图形化的方法来演示Bean绑定,让我们来添加将绘制所选汽车预览的定制组件。
我们会将此组件的属性绑定到相应的表元素。
然后,如果再次运行应用程序,则在更改选定的行并更改各种字段的值时,汽车预览也会被修改。
要使CarPreview组件适用CarsApp项目,请执行以下操作:
1.如果尚未生成CarPreview组件,则下载CarPreview.zip文件。
2.使用标准zip工具,提取zip文件的归档文件。
3.选择“文件”>“打开项目”,并导航至zip文件的提取内容,然后选择CarPreview项目。
4.单击“打开项目”。
此时该项目会在IDE中打开。
5.右键单击"CarPreview"节点,然后选择“清理并生成”。
该操作将编译该项目中的文件,以使您能够将CarPreview类用作可直接拖放到窗体中的Bean。
此组件是作为JavaBeans组件编写的,因此可以将其添加到组件面板中,这样便于将该组件添加到多个应用程序中。
但是现在我们会直接将此组件从“项目”窗口拖动到应用程序中。
要将CarPreview组件添加到应用程序中,请执行以下操作:
1.在“项目”窗口中,展开"CarPreview">“源包”>"carpreview"节点。
2.将CarPreview.java类拖动到窗体中。
要将该类插入菜单的正下方,请将其置于表的上方,与其他控件左对齐,并且折到菜单栏的底部,如下图所示。
3.在整个窗体上水平调整预览组件大小。
4.使用与将滑块和复选框绑定到masterTable组件中的元素相同的方法,将CarPreview组件的所有绑定属性绑定到masterTable的对应selectedElement属性。
使用属性表单中的“绑定”弹出菜单或“绑定”标签。
5.再次运行CarApp应用程序。
在正运行的应用程序中,会在选择表中不同的行、更改表中的值、移动滑块以及选中和取消选中复选框时看到CarPreview组件的变化。
下图显示了正在运行的最终应用程序。
生成并部署应用程序
如果您对应用程序正常工作的现状感到满意,可以准备在IDE外部署应用程序。
在此部分中,将生成应用程序的可发布输出,并从IDE之外运行应用程序。
生成应用程序
IDE中的主生成命令是“清理并生成”命令。
“清理并生成”命令可以删除以前编译的类和其他生成工件,然后从头开始重新生成整个项目。
注意:
还有一个“生成”命令,该命令不会删除旧的生成工件,但此命令缺省情况下处于禁用状态。
有关详细信息,请参见创建、导入和配置Java项目指南的“在保存时编译”部分。
生成应用程序:
∙选择“运行”>“清理并生成主项目”(Shift-F11)。
此时Ant生成脚本中的输出会显示在“输出”窗口中。
如果未显示“输出”窗口,则可以通过选择“窗口”>“输出”>“输出”手动打开该窗口。
清理并生成项目时,会出现以下情况:
∙删除(“清理”)由以前的生成操作所生成的输出文件夹。
(大多数情况下,这些文件夹为build和dist文件夹。
)
∙将build和dist文件夹添加到项目文件夹(以下称为PROJECT_HOME文件夹)中。
∙将所有源都编译成.class文件,并将这些文件放置在PROJECT_HOME/build文件夹中。
∙在PROJECT_HOME/dist文件夹中创建包含项目的JAR文件。
∙如果您已为该项目指定了任何库(除了JDK之外),则在dist文件夹中将创建一个lib文件夹。
这些库将被复制到dist/lib中。
∙JAR中的清单文件更新后将包括用于指定主类的条目以及项目的类路径中的所有库。
在IDE外部运行应用程序
在IDE外部运行应用程序:
1.从IDE外部启动JavaDB。
请访问http:
//db.apache.org/derby/docs/dev/getstart/
注意:
还可以从IDE内部启动JavaDB,但在退出IDE时,服务器将停止。
2.使用系统的文件资源管理器或文件管理器导航至CarsApp/dist目录。
3.双击CarsApp.jar文件。
几秒钟后,将会启动应用程序。
注意:
如果在双击JAR文件时没有启动应用程序,请参见本文以了解在操作系统中设置JAR文件关联的相关信息。
也可以通过命令行启动应用程序。
通过命令行启动应用程序:
1.从IDE外部启动JavaDB。
2.在您的系统上,打开命令提示符或终端窗口。
3.在命令提示符中,转至CarsApp/dist目录。
4.在命令行中,键入以下语句:
java-jarCarsApp.jar
将应用程序分发给其他用户
现在您已验证了应用程序能够在IDE外部运行,接下来便可以分发该应用程序。
分发应用程序:
1.在系统中,创建一个zip文件,其中包含应用程序的JAR文件(CarsApp.jar)和附带的lib(它包含应用程序需要的其他JAR文件)。
2.将该文件发送给要使用该应用程序的人员。
指导他们解压缩zip文件,同时确保CarsApp.jar文件和lib文件夹放置在同一个文件夹中。
3.指示用户按照上面的在IDE外部运行应用程序部分中的步骤进行操作。
后续步骤
本教程介绍了IDE中对Swing应用程序框架和Bean绑定的支持。
有关创建包含一对多和多对一关系的应用程序以及单独数据条目对话框的信息,请参见
创建定制桌面数据库应用程序。
有关将Hibernate用于Swing应用程序的持久性层的信息,请参见在JavaSwing应用程序中使用Hibernate。
有关设计GUI应用程序的详细信息,请参见设计SwingGUI。
有关在IDE中使用Bean绑定的详细信息,请参见在桌面应用程序中绑定Bean和数据。