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

4.2 关键技术

4.2.1 自定义面板背景图片

在Swing中,默认提供的控件并不美观。为了让程序更加好看,首先开发一个支持背景图片的面板类。在com.lw.util包中创建BackgroundPanel类,它继承了JPanel类,并重写了paintComponent()方法,其代码如下:

paintComponent()方法可以用来重新绘制控件,该方法的声明如下:

g:进行绘制的Graphics上下文。

为了让背景图片刚好填充整个面板,需要获得面板的宽度和高度,这里使用getWidth()和getHeight()两个方法,其声明如下:

为了绘制背景图片,使用了Graphics类中定义的drawImage()方法,这个方法在Graphics类中具有多种重载形式,BackgroundPanel类中使用的形式声明如下:

其中各个参数的说明如表 4.1 所示。

表4.1 drawImage()方法参数说明

4.2.2 窗体居中显示

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

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

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

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

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

4.2.3 使用JavaBean封装信息

在本模块中,用户需要填写快递单,这涉及了大量的信息,例如发件人姓名、电话、地址,收件人姓名、电话、地址等,通常定义一个类来保存这些信息,将它们设置成私有字段,并提供对应的get和set方法,这样就构成了一个JavaBean。ExpressListBean的代码如下:

4.2.4 获得MySQL数据库连接

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

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

实践真知
注意

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

4.2.5 批量处理数据库操作

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

1.保存快递单信息

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

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

2.修改快递单

修改快递单使用的是JdbcHelper类中的update()方法,其关键代码如下:

4.2.6 使用List保存查询结果

在JDBC中,查询操作的返回值是ResultSet类型的对象,它使用起来并不方便,因此通常将结果保存到List中。本模块使用JdbcHelper类的query()方法来保存表格中的全部数据,其关键代码如下:

实践真知
注意

如果数据表中有大量数据,这种处理方式效率是非常低的,推荐增加查询条实知件来显示结果数量。

4.2.7 使用Java操作打印机

打印是本模块的核心功能,使用Java来完成打印功能,主要步骤如下:

(1)获得PrinterJob对象。

PrinterJob是控制打印的主要类,应用程序调用该类的方法来建立打印任务,可以选择是否为用户激活打印对话框,然后打印文件。由于该类是抽象类,不能够使用new操作符进行实例化,这里使用getPrinterJob()方法来获得该类实例,该方法的声明如下:

(2)启动打印对话框。

printDialog()方法将打开一个本地对话框,用来给用户修改打印属性,这些属性包括纸质大小、打印方向等,其运行效果如图 4.6 所示。

单击图 4.6 中的“属性”按钮,弹出的对话框如图 4.7 所示。

图 4.6 打印对话框

图 4.7 “打印属性”对话框

在图 4.7 中,用户可以配置纸张的尺寸、类型等属性。

(3)绘制打印内容。

在完成打印机配置之后,还需要设置打印内容,这是使用setPrintable()方法完成的,该方法的声明如下:

painter:包含打印内容的Printable对象。

在Printable接口中,定义了一个print()方法,该方法的声明如下:

❑ graphics:绘制打印信息的上下文。

❑ pageFormat:包括页面大小和方向信息的PageFormat对象。

❑ pageIndex:页面的页码,从 0 开始计数。

(4)开始打印。

如果print()方法的返回值是Printable.PAGE_EXISTS,则表示准备工作已经完成,可以开始打印。 nyLnXbJd2xh+2GPDwv5805Wz8MtLdKU/QceIZxYksdkC+GnQ7KwM5/iQDkWFW01W

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