⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pictureviewer.java

📁 这是使用java语言实现的,小的图片浏览器!主要使用awt组件完成!
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import java.io.File;
import java.io.FilenameFilter;

public class PictureViewer implements ActionListener{
    private Frame frame;
    private MyCanvas mc ;
    private String fpath;
    private String fname;
    private File[] files;
    private int findex ;
	private FileDialog fd_load;	
	private MyFilter filter;
	private Button previous ;
	private Button next ;
	public static void main( String args[]) throws Exception {
		new PictureViewer().init();
	}
	public void init(){
	    frame = new Frame("PictureViewer");
	    Panel pb = new Panel();
	    Button select = new Button("选择图片");
	    previous = new Button("上一张");
	    next = new Button("下一张");
	    select.addActionListener(this);
	    previous.addActionListener(this);
	    next.addActionListener(this);
	    pb.add(select);
	    pb.add(previous);
	    pb.add(next);
	    mc = new MyCanvas();
	    mc.setBackground(new Color(200,210,230));
	    mc.addComponentListener(mc);
	    frame.add(pb,"North");
 	    frame.add(mc,"Center");
	    frame.setSize(360,360);
	    frame.setLocation(400,200);
	    frame.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);	
			}	
		});  
	    frame.setVisible(true); 
	    this.validateButton();
	    filter = new MyFilter();
	    fd_load = new FileDialog(frame,"打开文件",FileDialog.LOAD);
	    fd_load.setFilenameFilter(filter);
	}
	@Override
	public void actionPerformed(ActionEvent e){
		String command = e.getActionCommand();
		if(command.equals("选择图片")){
			fd_load.setVisible(true);
			fpath = fd_load.getDirectory();
			fname = fd_load.getFile();
			if((fpath != null) && (fname != null)){
				this.display(new File(fpath + fname));	
				files = new File(fpath).listFiles(filter);
				this.setIndex();
			}			
		}else if(command.equals("上一张")){
			findex--;
			if(findex<0)
				findex = 0;
			this.display(files[findex]);
		}else if(command.equals("下一张")){
			findex++;
			if(findex >= files.length)
				findex = files.length-1;
			this.display(files[findex]);
		}
		this.validateButton();
	}	
	public void display(File f){
		try{
		    BufferedImage bi = ImageIO.read(f);
		    mc.setImage(bi);
		    frame.setTitle("PictureViewer - [" +  f.getName() + "]");
	    }catch(Exception e){
	    	e.printStackTrace();	
	    }
	    mc.repaint();
	}
	public void setIndex(){
		File current = new File(fpath + fname);	
		if(files != null){
			for(int i=0;i<files.length;i++){
				if(current.equals(files[i])){
					findex = i;	
				}	
			}			
		}
	}
	public void validateButton(){
		previous.setEnabled((files!=null) && (findex > 0));
		next.setEnabled((files!=null) && (findex<(files.length-1)));	
	}
}

class MyCanvas extends Canvas implements ComponentListener{
	private BufferedImage bi;
	private Image im;
	private int image_width;
	private int image_height;
	public void setImage(BufferedImage bi){
		this.bi = bi;
		this.zoom();
	}
	public void paint(Graphics g){
		g.drawImage(im,(this.getWidth()-image_width)/2,(this.getHeight()-image_height)/2,this);
	}
	public void componentResized(ComponentEvent e){
		if(bi != null){
			this.zoom();
			this.repaint();
		}
	}
	public void componentMoved(ComponentEvent e){}
	public void componentShown(ComponentEvent e){}
	public void componentHidden(ComponentEvent e){}
	public void zoom(){
		if(bi == null)
			return;
		int screen_width = this.getWidth();
		int screen_height = this.getHeight();
		double screen_proportion = 1.0 * screen_height / screen_width;	
		image_width = bi.getWidth(this);
		image_height = bi.getHeight(this);
		double image_proportion = 1.0 * image_height / image_width;
		if(image_proportion > screen_proportion){
			image_height = screen_height;
			image_width = (int)(image_height / image_proportion);	
		}else{
			image_width = screen_width;
			image_height = (int)(image_width * image_proportion); 	
		}
		im = bi.getScaledInstance(image_width,image_height,Image.SCALE_SMOOTH);
	}
	
}	

class MyFilter implements FilenameFilter{
	private String[] extension;	  
	public MyFilter(){
		extension = new String[]{".jpg", ".JPG", ".gif", ".GIF", ".png", ".PNG", ".jpeg", ".JPEG"};	
	}
	public MyFilter(String[] extension){
		this.extension = extension;	
	}
	public boolean accept(File dir,String name){
		for(String s : extension){
			if(name.endsWith(s)){
				return true;	
			}
		}	
		return  false; 
	}	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -