- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
疯狂java实战演义–第3章图片浏览器
第3章 图片浏览器
3.1 图片浏览器概述
图 3.1 图片浏览器
3.2 创建图片浏览器的相关对象
我们首先需要创建图片浏览器的相关对象。我们先创建图片浏览器的界面对象ViewerFrame,然后在该类中,我们为菜单、按钮加了事件监听器,所以定义了一个继承AbstractAction的类ViewerAction来响应这些动作。在Action中响应动作,就到处理具体逻辑的步骤,我们把所有的逻辑处理放到ViewerService类中,ViewerService中包括打开图片、上一张、下一张、放大和缩小图片等功能,为了程序更好的解耦合,我们可以把具体的某些业务处理放置到独立的类中进行处理。
除了以上所说的几个类,由于我们这个程序有打开图片的操作,所以需要一个文件过滤器(只能选择图片类型的文件),所以定义了一个继承JFileChooser的类ViewChooser,这个类里面定义了自己的文件过滤器。本章中所涉及的对象及它们之间的关系如图3.2所示。
图 3.2 图片浏览器类图
本章程序的功能较为简单,因此所涉及的对象也并不复杂,只有简单的五个对象。
3.2.1 文件过滤器
如果要使文件对话框实现文件过滤功能,就需要结合FileFilter类来进行文件操作,文件过滤器是FileFilter的一个继承,也是文件对话框的内部类,里面重写了FileFilter的accept与getDescription方法:
boolean accept( File f ),判断文件是否属于图片类型。
String getDescription(),获取过滤器的描述。
文件过滤器主要在用户打开图片时使用,当用户进行了图片选择后,就可以对用户所选择的文件进行验证。当用户打开文件选择时,我们就可以对所有的文件进行一次过滤,文件选择器中只可以选择我们所定义的图片文件,那么其他的文件将不会被显示。在本章中,文件过滤器是文件对话框类(ViewerFileChooser)的一个内部类(MyFileFilter)。
3.2.2 文件对话框
Java文件对话框的实现比较简单,只要使用JFileChooser类并提供一个自己的构造器即可。这里的文件对话框对象是JFileChooser类的子类,目的是为了加入在3.2.1中定义的文件过滤器:
void addFilter(),为这个文件对话框增加过滤器。
该对象中的addFilter方法主要用于向文件对话框加入文件过滤器,例如我们需要只显示.bmp的文件,那么可以在addFilter方法中使用以下代码实现:
this.addChoosableFileFilter(new MyFileFilter(new String[] { .BMP },
BMP (*.BMP)));
在文件对话框的addFilter方法加入以上的代码后,那么用户将不能看到.bmp的文件,并且在“文件类型”的下拉中也只能选择.bmp,效果如图3.3所示。在本章中,文件对话框对应的是ViewerFileChooser类。
图3.3 文件过滤器的作用
3.2.3 主界面类
我们建立一个界面类作为图片浏览器的主界面,该类包括图片显示区、菜单栏、工具栏,并为工具栏与菜单栏加上事件监听器,如下:
void init(),初始化图片浏览器的界面。
JLabel getLabel(),获取显示图片的JLabel。
createToolPanel(),创建放大、缩小、上一张、下一张等工具按钮。
void createMenuBar(),创建文件、工具、帮助等菜单。
在这里需要注意的是,由于打开的图片大小并不能确定,因此图片显示区必须使用JScrollPane。在本章中,主界面对应的是ViewerFrame类。
3.2.4 业务处理类ViewerService
业务处理类主要是处理图片浏览器的大部分业务逻辑,包括打开图片、关闭浏览器、放大图片、缩小图片、浏览上一张图片、浏览下一张图片等功能,如下:
static ViewerService getInstance(),获取ViewerService类的一个单态实例。
void open( ViewerFrame frame ),弹出文件选择框,并读取被选择到的图片。
void zoom( ViewerFrame frame, boolean isEnlarge ),对正在浏览到的图片做放大或者缩小操作,这里可能会丢失图片精度。
void last( ViewerFrame frame ),浏览上一张图片。
next( ViewerFrame frame ),浏览下一张图片。
void menuDo( ViewerFrame frame, String cmd ),响应菜单的动作。
在本章中,这个业务处
文档评论(0)