购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 关键技术

1.2.1 绘制艺术字

在程序的主窗体中,显示的彩色文本信息“备忘录模块”是使用Java的绘图技术绘制在面板控件上的,其关键代码如下:

这里主要使用Graphics2D类中的drawString方法来完成字符串的绘制,该方法的声明如下:

❑ str:需要绘制的字符串。

❑ x:绘制的字符串位置的x坐标。

❑ y:绘制的字符串位置的y坐标。

1.2.2 窗体居中显示

为了让窗体看起来更加舒适,可以设置窗体显示位置为居中显示。这就需要获得用户显示器的大小并根据窗体大小来计算显示位置,这是通过工具类WindowUtil实现的,该类的代码如下:

首先定义getSize()方法,它返回窗体的大小,这里将窗体的宽度设置为 500 像素,高度设置为 309 像素。Dimension类用于封装控件的宽度和高度,使用该类有利于以面向对象的方式编写代码。

接着定义getLocation()方法,它返回窗体左上角的坐标。这里首先获得Toolkit类的对象,由于该类是抽象类,不能直接使用new操作符实例化,因此使用该类定义的getDefaultToolkit()方法获得实例。该方法的声明如下:

Toolkit类中的getScreenSize()方法可以获得用户显示器的分辨率,该方法的声明如下:

如果用户的分辨率小于 500×309 像素,则弹出提示对话框并终止程序。

1.2.3 使用JavaBean封装信息

在本模块中,用户需要填写备忘录,这涉及了大量的信息,例如姓名、主题、内容、类型和时间等。通常定义一个类来保存这些信息,将它们设置成私有字段,并提供对应的get和set方法,这样就构成了一个JavaBean。MemoBean的代码如下:

1.2.4 获得MySQL数据库连接

本程序的后台使用MySQL数据库来保存备忘录信息,在使用JDBC操作数据库时,需要先获得数据库连接对象,这是使用JdbcHelper类的getConnection()方法实现的,该方法的代码如下:

方法中用到的DRIVER、URL、USERNAME和PASSWORD是字符串常量,定义在JdbcConfig接口中,该接口的代码如下:

实践真知
注意

在使用JDBC操作数据库时需要为项目添加数据库驱动文件。

1.2.5 批量处理数据库操作

在处理大量数据时,使用批处理操作能够大幅度提高效率,这里使用该技术完成备忘录的保存和修改操作。

1.保存备忘录信息

使用JdbcHelper类的save()方法来保存备忘录信息,其关键代码如下:

使用PreparedStatement接口可以完成批处理操作。批处理时使用问号来表示需要添加的变量,然后使用该接口中与变量类型对应的set()方法来添加变量。例如setString()表示设置字符串的值,这个方法的第一个参数表示变量的位置,第二个参数表示变量的值。最后调用executeUpdate()方法来完成批量保存。

2.修改备忘录

修改备忘录使用的是JdbcHelper类中的update()方法,其关键代码如下:

1.2.6 使用List保存查询结果

在JDBC中,查询操作的返回值是ResultSet类型的对象,它使用起来并不方便,因此通常将结果保存到List中。

1.保存全部备忘录信息

本模块使用JdbcHelper类的queryAll()方法保存表格中的全部数据,其关键代码如下:

2.保存部分备忘录信息

本模块使用JdbcHelper类的query ()方法来保存满足查询条件的全部数据,这里将查询条件封装到MemoBean对象中,其关键代码如下:

1.2.7 使用正则表达式校验日期

在输入时间时,需要用户按照类似“2010-12-22”的样式输入,可以使用正则表达式完成输入格式的校验工作,但是非常复杂。这里使用Java代码来辅助校验,其关键代码如下:

字符串"([123]\\d{3}-(([0][1-9])|([1][0-2]))-(([0][1-9])|([12]\\d)|([3][01])))"是自定义的正则表达式,[123]表示 1、2 和 3 三个数字选取一个;(\\d)表示 0~9 中任意一个数字;{3}表示将前面临近的表达式重复 3 遍,即(\\d){3}与(\\d)(\\d)(\\d)等价。对于年,其取值范围设置成了 1000~3999。对于月,合法的格式应该是 01~09 和 10、11、12。使用[0][1-9]来表示 01~09,使用[1][0-2]来表示 10、11、12。中间的|表示或。对于日,合法的格式应该是 01~09、10~29、30、31,使用[0][0-9]表示 01~09,使用[12]\\d表示 10~29,使用[3][01]表示 30 和 31。

但是这里并没有对具体的年份、月份进行校验。例如闰年的 2 月不能有 30 天、非闰年的 2 月不能有 29 天。每年的 4、6、9、11 月都是 30 天,不能有 31 天。使用正则表达式完成这类校验非常复杂,因此使用Java代码来完成。

Pattern类是在java.util.regex包中定义的正则表达式类,它的compile()方法能够解析给定的正则表达式,该方法的声明如下:

regex:需要解析的正则表达式。

Matcher类的matches()方法能够判断给定的字符串是否符合正则表达式,该方法的声明如下:

1.2.8 调用系统工具

在本模块中,提供了系统工具的调用功能,用户可以打开Windows系统中的记事本和计算器程序,这是使用Runtime类完成的,打开记事本的关键代码如下:

Runtime类的exec()方法可以执行系统命令,该方法的声明如下:

command:本地系统命令。

实践真知
说明

本程序是在Windows系统中开发的,并不适用于Linux系统。 V/thJFuvZFsTgi1CQfy164JA+5rHKI4FLcZlET9GdwDzFomKfS9lux9DNEXb8dby

点击中间区域
呼出菜单
上一章
目录
下一章
×