Java设计GUI图片查看器Word文件下载.docx

上传人:b****6 文档编号:16269303 上传时间:2022-11-22 格式:DOCX 页数:26 大小:924.79KB
下载 相关 举报
Java设计GUI图片查看器Word文件下载.docx_第1页
第1页 / 共26页
Java设计GUI图片查看器Word文件下载.docx_第2页
第2页 / 共26页
Java设计GUI图片查看器Word文件下载.docx_第3页
第3页 / 共26页
Java设计GUI图片查看器Word文件下载.docx_第4页
第4页 / 共26页
Java设计GUI图片查看器Word文件下载.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Java设计GUI图片查看器Word文件下载.docx

《Java设计GUI图片查看器Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java设计GUI图片查看器Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。

Java设计GUI图片查看器Word文件下载.docx

C语言头文件)

lib:

包含了java运行库及JDKAPI库

src.zip:

解压为src,表示java的类库源代码

(2)配置环境变量

右击【计算机】,选择【属性】,点击【高级系统设置】后,再点击【环境变量】,打开设置环境界面。

点击【编辑】,按钮打开如下窗口。

在下面窗口添加如下值:

变量名:

classpath

变量值:

.;

D:

\ProgrammingSoftware\JDK7\lib

java_home

\ProgrammingSoftware\JDK7

path

;

\ProgrammingSoftware\JDK7\bin

(3)最后点击【开始】菜单下面的【运行】,输入cmd打开DOS窗口,在DOS窗口中输入javac,如果出现如下图的信息,则表示配置jdk成功

图1Java安装成功

一个简单的实例:

publicclassTest{

 

 

publicstaticvoidmain(String[]args){

System.out.println("

HelloWorld!

"

);

}

}

运行结果:

(4)下载Eclipse

在Eclipse官网下载Eclipse软件,下载之后,解压压缩包,直接打开应用程序,一般工作空间都在C盘目录下,采用默认就可以,点击“OK”,打开工作界面,创建NewJavaProject,在创建NewPackage,之后就可以创建类,建设以工作名称作为类名,我本次所做的小程序类名为jiang。

(5)类图结构

系统中用到了一些基本类、实现了一些接口。

系统所用到的类如图1所示:

图2系统类图

2.1.3程序详细设计

(1)程序中引用的类

①JPanel类

程序中定义了三个Jpanel类分别是:

pathBar,picContainer,ctrBar。

用于图片查看器的整体布局。

其中pathBar为顶部路径栏,picContainer为图片显示区域,ctrBar为底部控制栏。

②JLabel类

程序中定义了类名为pathInfo的JLabel类,用于实现顶部路径栏,底部控制栏按钮的文字显示。

③JButton类

程序中定义了多个JButton类:

openbtn,prebtn,nextbtn,zoominbtn,zoomoutbtn,oripicbtn,angleleftbtn,anglerightbtn,exitbtn,deletebtn,sav;

为查看器的按钮。

④Image类

程序中定义了名为pic的Image类用于对被查看的图片的操作。

⑤BufferedImage类

此类为用于显示的缓冲区图像。

在对图像进行操作前,都先将图片读进预设的缓冲区,然后再显示在用户前端,这样虽然速度慢了点,但很好的消除了图片闪烁效果。

⑥Graphics2D类

此类与上面的BufferedImage类共同作用,通过运用双缓冲技术很好的消除屏闪问题。

⑦String类

程序中运用了三个不同的String类,从而实现了需要查看的图片的路径的操作,并且在启动图片查看器时,图片的路径能够在路径栏显示出来。

同时还设置了String数组用于存储用户选定的目录下所有指定格式的图片,这样可以实现循环浏览图片等操作。

(2)程序的构造方法及其实现

因为图片查看器可以实现对图片不同的操作,程序中构造了十多个方法以达到其目的。

各构造方法相互联系共同完成图片查看器的各项功能。

各个方法描述如下:

①publicvoidinit()

本方法实现了对图片查看器的界面的整体布局及按钮的初始化。

对页面的总体布局采用了以下主要代码进行实现:

setLayout(newBorderLayout());

add(pathBar,BorderLayout.NORTH);

add(picContainer,BorderLayout.CENTER);

add(ctrBar,BorderLayout.SOUTH);

resize(640,400);

设置顶部路径栏,及其文字显示;

代码如pathBar=newJPanel();

pathBar.setLayout(newBorderLayout());

pathInfo.setText("

图片查看器"

pathBar.add(pathInfo);

同时对图片显示区域,底部的控制栏的设置也运用了相似的代码进行实现,在此就不再重复。

各按钮除了“打开”一按钮外,其他的各按钮均设置为false。

这是因为只有“打开”图片后才能进行以下的像循环浏览,旋转,删除等操作。

具体方法的实现见附件。

②publicvoidactionPerformed(ActionEvent)

在本方法中主要实现了用户对底部控制栏各按钮的点击后,图片查看器进行的相对应的操作反应。

方法中一开始用JButtonclick=(JButton)e.getSource();

获取按键源,然后根据click与程序设定的已知的类进行比较决定进行相应的反应。

if(click==openbtn);

if(click==prebtn&

&

pic!

=null);

等一系列进行判断后,进行或是打开文件open()方法的调用;

或是pre()方法的调用;

其他各操作也大同小异,在此就不再赘述。

方法的详细代码见附件。

③publicvoidopen()

该方法实现了对用户选定的文件路径下的后缀为.jpg的图片文件的打开操作。

同时能够对该路径下的一切符合条件的文件进行跟踪处理。

方法中的核心在于一个过滤操作:

FileNameExtensionFilterfilter=newFileNameExtensionFilter("

*.JPG"

"

jpg"

这样就能实现.jpg文件的浏览了。

在选定了图片后,相应的按钮值应该被赋值为ture,以便进行其他的操作。

若没有选定图片则显示“没有选择图片”。

④publicvoidsave()throwsIOException

该方法是为了满足用户希望对图片进行另外存储的操作,通过用户自己的选择重新选定图片的存储路径。

详细实现见附件中代码。

⑤publicvoidpre()及publicvoidnext()

Pre与next方法实现了对当前图片的上一张下一张的浏览。

因为在第一次打开文件时就将该路径下所有符合要求的图片存储在String[]pics中。

通过if(i==0){i=pics.length-1;

}else{i--;

}其中i为当前的图片位置数。

通过dir=path+"

\\"

+pics[i];

获得文件的路径,然后调用loadImage(dir);

此方法将在后面介绍;

与上面的方法相对应的是此方法实现了对当前图片下一张的浏览,实现原理与上相同,if(i==pics.length-1){i=0;

}else{i++;

}通过调用loadImage(dir);

一方法实现。

⑥publicvoidpicTrans()

如果bufImage为空则直接返回,之后进行过滤图像操作,2D仿射变换,设置仿射变换的比例因子transform.setToScale(scaleX,scaleY);

创建仿射变换操作对象,过滤图像,将目标图像存在filteredBufImage中,然后显示。

⑦publicvoidzoomin()

此方法实现了对当前的图片进行按设置比例缩小操作。

在进行缩小操作前,先对图片的大小进行判断,看是否已经缩小到最小,若最小则显示提示信息“已经缩至最小!

”;

否则进行缩小操作。

在此过程中调用了picTrans()方法,以及repaint();

重绘组件的方法。

⑧publicvoidoripic()及publicvoiddelete()

方法实现了将放大或缩小后的图片大小还原的操作。

同时也调用了picTrans()方法,以及repaint();

具体的picTrans()方法将在下面详细描述。

此方法具体实现见附件;

publicvoiddelete()方法将图片彻底删除,删除后图片彻底被粉碎,回收站里面都不能找到。

因此要慎用此按钮。

⑨publicvoidangleleft()及publicvoidangleright()

方法每次对图片进行45°

的向左向右的旋转操作。

radius+=-Math.PI/2;

用以控制,而这些操作后,每次都应oripicbtn.setEnabled(true),也就是要将还原按钮赋值为真。

⑩publicvoidloadImage(StringfileName)及publicvoidexit()

前一个方法通过增加图像到加载器中,创建原始缓冲区图像,创建bufImage的图形环境:

bufImageG=bufImage.createGraphics();

传输源图像数据到缓冲区图像中一些列的操作,对图片进行了加载操作;

publicvoidexit()方法是退出查看器的方法。

3.设计结果与分析

3.1系统测试

使用eclipse运行程序时,会出现applet小程序的界面。

并显示程序已启动。

显示如图3:

图3程序开始时的界面

单击“打开”按钮后的效果图如图4:

图4选择图片文件

选择“打开”,选择要打开的图片后的效果图如图5:

图4打开文件夹中的图片

多次单击“缩小”按钮后的效果图如图6:

图6图片缩小显示

单击“左旋”按钮后的效果图如图7:

图7图片旋转显示

图8图片放大显示

3.2遇到的问题和解决方法

在用JAVA编写程序时,我遇到了很多困难,对很多的接口,类,方法都不是很熟悉,只好采用查看API文档,一个一个进行对照学习,同时也上网查看了有关图片查看器的相关描述,还向同学请教了,翻阅了相关的书籍。

尤其是因为有些方法需要使用JDK1.7才行,所以在学校网络机房一开始不能运行,在安装了1.7版本后运行正常了。

还可以应用Eclipse软件解决此问题,另外文件在打开时会有严重的频闪问题,在重写了publicvoidupdate(Graphicsg){this.paint(g);

}后解决了。

4.设计体会

在这次的面向对象程序设计课程设计中,我进一步熟悉了上一学期学习的JAVA语言中的包,类,方法:

导入哪些包,继承哪些类可以实现什么方法等。

深刻感受到了面向对象语言中类库的强大功能。

但是由于自己掌握的知识有限,图片查看器的功能没有做到尽善尽美,尤其是删除操作,删除掉以后就没了,在回收站也找不到。

还有就是单击“保存”按钮后似乎就不能进行其他操作,但这样的情况或有或无。

通过这次的课程设计,我懂得了要充分利用网络资源查找资料同时要多向同学请教,大家互相讨论进步得会很快。

通过几天的努力,这次课程设计圆满的结束了,在这个过程中,我收获了很多的知识,同时也非常感谢杭志老师帮助与指导。

在以后的学习中,我会更加努力的学好专业知识,并将所学知识用于实践当中去,以便牢固掌握知识。

5.参考文献

[1]张铁成.Java程序设计课程教学改革的探索与实践[J].职业,2015(23):

38-40.[2]刘艳秋, 

王国春, 

彭馨仪. 

Java程序设计课程分层次教学模式的研究与实践[J]. 

信息化建设, 

2015(06).

[3]尉哲明,冀素琴.基于Java的综合课程设计研究与实践[J].计算机教育,2015(03).

[4]田小玲.JAVA程序设计课程资源建设与探索[J].软件导刊:

教育技术,2015(10).

6.附录:

packagejiang;

importjava.awt.*;

importjava.awt.event.*;

importjava.awt.geom.*;

importjava.awt.image.*;

importjavax.swing.*;

importjavax.swing.filechooser.*;

importjava.io.*;

importjava.applet.*;

publicclassPicViewextendsAppletimplementsActionListener{

JPanelpathBar,picContainer,ctrBar;

JLabelpathInfo;

JButtonopenbtn,prebtn,nextbtn,zoominbtn,zoomoutbtn,oripicbtn,angleleftbtn,

anglerightbtn,exitbtn,deletebtn,savebtn;

Imagepic;

//查看的图片

BufferedImagebufImage;

//用于显示的缓冲区图像

BufferedImageoriBufImage;

//原始缓冲区图像

Graphics2DbufImageG;

//缓冲区图像的图形环境

Stringpath,filename,dir;

//需要查看图片的路径

String[]pics;

//目录下所有指定格式的图片

intpicWidth,picHeight;

//图片大小

inti=0;

finaldoubleZOOM_PERCENT=0.15;

//每次放大和缩小的倍率

finalStringFILE_TYPE="

.jpg"

booleanhasPic,isangled;

doublescaleX;

//图像水平方向的缩放因子

doublescaleY;

//图像竖直方向的缩放因子

doubleradius;

//旋转角度

FilterfilterJpg;

publicvoidinit(){

//顶部路径栏

pathBar=newJPanel();

pathBar.setLayout(newBorderLayout());

pathInfo=newJLabel();

pathInfo.setText("

pathBar.add(pathInfo);

//图片显示区域

picContainer=newJPanel();

picContainer.setBackground(Color.LIGHT_GRAY);

//底部控制栏

ctrBar=newJPanel();

openbtn=newJButton("

打开"

openbtn.addActionListener(this);

savebtn=newJButton("

保存"

savebtn.addActionListener(this);

prebtn=newJButton("

上一幅"

prebtn.addActionListener(this);

nextbtn=newJButton("

下一幅"

nextbtn.addActionListener(this);

zoominbtn=newJButton("

放大"

zoominbtn.addActionListener(this);

zoomoutbtn=newJButton("

缩小"

zoomoutbtn.addActionListener(this);

oripicbtn=newJButton("

原始"

oripicbtn.addActionListener(this);

angleleftbtn=newJButton("

左旋"

angleleftbtn.addActionListener(this);

anglerightbtn=newJButton("

右旋"

anglerightbtn.addActionListener(this);

deletebtn=newJButton("

删除"

deletebtn.addActionListener(this);

exitbtn=newJButton("

退出"

exitbtn.addActionListener(this);

ctrBar.add(openbtn);

ctrBar.add(zoominbtn);

ctrBar.add(zoomoutbtn);

ctrBar.add(oripicbtn);

ctrBar.add(prebtn);

ctrBar.add(nextbtn);

ctrBar.add(angleleftbtn);

ctrBar.add(anglerightbtn);

ctrBar.add(deletebtn);

ctrBar.add(savebtn);

ctrBar.add(exitbtn);

//界面总布局

setLayout(newBorderLayout());

add(pathBar,BorderLayout.NORTH);

add(picContainer,BorderLayout.CENTER);

add(ctrBar,BorderLayout.SOUTH);

resize(640,480);

scaleX=1.0;

scaleY=1.0;

radius=0.0;

hasPic=false;

isangled=false;

dir="

prebtn.setEnabled(false);

nextbtn.setEnabled(false);

zoominbtn.setEnabled(false);

zoomoutbtn.setEnabled(false);

angleleftbtn.setEnabled(false);

anglerightbtn.setEnabled(false);

oripicbtn.setEnabled(false);

deletebtn.setEnabled(false);

savebtn.setEnabled(false);

}

publicvoidactionPerformed(ActionEvente){

JButtonclick=(JButton)e.getSource();

//获取按键源

if(click==openbtn){

open();

}

if(click==prebtn&

=null){

pre();

if(click==nextbtn&

next();

if(click==zoominbtn&

pathInfo.setForeground(Color.BLACK);

pathInfo.setText("

放大图片..."

zoomin();

if(click==zoomoutbtn&

缩小图片..."

zoomout();

if(click==oripicbtn&

oripic();

if(click==angleleftbtn&

angleleft();

if(click==anglerightbtn&

angleright();

if(click==exitbtn){

exit();

if(click==deletebtn&

=null)

{

删除图片"

delete();

if(click==savebtn&

pathInfo.setForeground(Color.BLAC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1