Java课程设计的图片浏览器的
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.课程设计的任务及要求
二.需求分析
图形化界面(GUI)编程,编写一个图片浏览器程序可以支持“ “.GIF”,“.JPEG',“.jpeg ”,“.TGA',“.JPG”,“.jpg ” 等格式,单打开图片,可以将同一目录下的图片按缩略图打开按“上一”“下一”按钮可以显示相应图片。运行Applet时,图像不是一气呵成的,因为方法不是吧图像完整的装入存再显示的。于此相反,方法创建一个线程,该线程与Applet的原有线程并发执行,
一边装入一边显示,从而产生上了不联需显示的现象。为了提高图像才显示效果, 可以采用双缓冲技术:首先把图像装入存,然后再显示在屏幕上。
三.设计思路
3.1界面设计
选择图片按钮:主要用dir函数实现图片的遍历。
上一,下一:通过做标轴回调函数实现。
由于本软件为单机软件,不需要大量的数据读写和数据交换,实现上、下功能要求只能读取PictureBox控件当前加载的目录,读取当前路径,创建一维数组。
frame = n ewFrame( "Pictureviewer");
Panel pb = n ewPa nel();
Button select = newButton("选择图片");
previous = newButton("上——");
next = newButton( ”下一"); select.addActionListener( this );
previous .addActionListener( this );
3.2. 图像加载:
Applet常用来显示储存在文件中的图像,多数Applet使用的是GIF或JPEG 格式的图像文件。需Applet加载图像只需首先定义Image对象,然后使用getlmage()方法把图像和文件结合起来即可。
image_width = bi.getWidth(this);
image_height = bi.getHeight(this);
double image_proporti on = 1.0 * image_height / image_width;
System.out.pri ntl n("image: w "+image_width+" ,h "+image_height+" ,p1 "+image_proportion);
if(image_proporti on > scree n_ proportio n){ image_height = scree n_height;
image_width = (i nt)(image_height / image_proportio n); System.out.pri ntl n(”
p1>p0 w= "+image_width); }else{
image_width = scree n_width; image_height = (in t)(image_width *
image_proporti on); System.out.pri ntln (” p0>p1 h= "+image_height); }
四.详细设计
4.1.程序设计流程图
4.2. 源程序代码
package C;
import java.io.File;
import java.io.File nameFilter;
public class MyFilter impleme nts File nameFilter{ private Strin g[] exte nsion; public MyFilter(){
extension = newString[]{".jpg", ".JPG", ".gif", ".GIF", ".png", ".PNG", ".jpeg", ".JPEG"};
}
public MyFilter(Stri ng[] exte nsio n){
this.exte nsion = exte nsion;
}
public boolea n accept(File dir,Stri ng n ame){
for(Stri ng s : exte nsion){
if(n ame.e ndsWith(s)){
return true;
}
}
return false;
}
}
package C;
import java.awt.*;
import java.awt.eve nt.*;
import java.awt.image.*;
public class MyCa nvas exte nds Can vas impleme nts Comp onen tListe ner{ /**
*
*/
private static fin al l ong serialVersi on UID = 1L;
private Bufferedlmage bi;
private Image im;
private int image_width;
private int image_height;
public void setImage(BufferedImage bi){
this.bi = bi;
this.zoom();
}
public void pain t(Graphics g){
g.drawlmage(im,(this.getWidth()-image_width)/2,(this.getHeight()-imag
e_height)/2,this);
}
public void comp onen tResized(Comp onen tEve nt e){
if(bi != null){
System.out.pri ntln ("resize!!");
this.zoom();
this.repai nt();
}
}