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

3.4 照片管理

3.4.1 功能概述

照片管理主要涉及添加照片、修改照片信息、删除照片、查询照片等,用户可以使用工具栏中的按钮完成这些操作,如图 3.13 所示。

图 3.13 照片管理相关按钮

3.4.2 添加照片

在添加照片时,可以采用单张添加方式,也可以采用批量添加方式。对于前一种方式,需要直接选择要添加的照片;对于后一种方式,需要选择直接包含添加照片的文件夹。添加照片的文件选择器如图 3.14 所示。

图 3.14 添加照片的文件选择器

添加照片功能是在addPhotoButtonAction Performed()方法中完成的,为了提高批量添加照片的效率,采用了线程技术,该方法的关键代码如下:

3.4.3 修改照片信息

在选中一张照片之后,单击“修改”按钮可以打开“修改信息”对话框,如图 3.15 所示。照片信息包括图片标题、拍摄日期、图片描述等内容。

图 3.15 “修改信息”对话框

修改照片信息是在updPhotoButtonActionPerformed()方法中完成的,它负责处理修改照片信息按钮的动作事件。首先判断是否仅有一张照片被选中,只有满足这个条件才弹出用来修改照片信息的对话框,否则将弹出相应的信息提示框,该方法的关键代码如下:

照片标题最长只能为 20 字节,即 10 个中文汉字或 20 个英文字符。通过捕获文本框的键盘事件,可以控制文本框可输入字符的最大长度,其关键代码如下:

照片标题不允许为空,或者全部由空格组成,否则“确定”按钮将变为不可用,这一功能是通过为标题文本框添加CaretListener事件监听器实现的,其关键代码如下:

方法titleTextFieldCaretUpdate()负责处理标题文本框的CaretListener事件,其关键代码如下:

在修改完成后,单击“确定”按钮,将调用submitButtonActionPerformed()方法,它负责完成修改信息的保存,该方法的关键代码如下:

3.4.4 删除照片

对于不需要保存的照片,用户可以将其选中后删除。在删除前,会显示确认对话框,防止用户错误操作,如图 3.16所示。用户也可以同时选中多张照片,然后实现批量删除。

图 3.16 确认删除照片对话框

方法delPhotoButtonActionPerformed()负责处理删除照片事件,其关键代码如下:

实践真知
注意

在删除照片时,需要从 3 个位置进行删除,分别为系统窗体、数据库和照片文件。

3.4.5 搜索照片

如果程序中保存了大量的照片,那么提供搜索功能就变得非常重要了。单击“搜索”按钮,打开如图 3.17 所示的对话框,在该对话框中,用户可以输入各种查询条件,例如根据图片标题查询、根据拍摄时间查询、根据图片描述查询等。

图 3.17 “搜索照片”对话框

如果已经选中了某个相册,再单击“搜索”按钮,则仅在该相册中进行搜索;否则在全部相册中进行搜索。单击搜索到的照片可以看到它属于哪个相册。

方法findPhotoButtonActionPerformed()负责处理工具栏中查找照片事件,其关键代码如下:

输入查询条件后单击“确定”按钮,将执行submitButtonActionPerformed()方法。该方法首先获得查询条件,并判断用户是否输入了查询条件。要求至少输入一个查询条件,负责该部分业务逻辑的代码如下:

然后是组织查询条件并执行查询,如果拍摄日期选择的查询条件是一段时间,要求终止日期不能小于起始日期,负责该部分业务逻辑的代码如下:

最后是创建一个线程,在该线程中将符合查询条件的照片加载到当前的浏览方式面板中,负责该部分业务逻辑的代码如下:

当单击查询得到的照片时,该照片所属的相册将被选中,这个功能是在按钮的鼠标事件监听器中完成的,负责该部分业务逻辑的代码如下:

实践真知
说明

当相册树足够大时,可能有部分相册节点不可见,通过JTree类的实知scrollPathToVisible(TreePath path)方法,可以使路径path中的叶子节点滚动至可见。

3.4.6 保存照片

本模块不仅能够将照片保存到数据库中,还能够将数据库中保存的照片复制出来。在选中一张或多张照片后,单击“保存”按钮,就可以将它(或它们)保存到指定的位置。保存照片的对话框如图 3.18 所示。

图 3.18 “保存”对话框

保存照片的功能是通过saveButtonActionPerformed()方法实现的,该方法的关键代码如下: 4Ptb5Ano7bXcVETKjsPO+SgWi56oIzX7T/mPJn29e29dLswCLUSZq0ET/4qenjzb

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