欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java图像查看器,java查看器,MyCanvas.jav

来源: javaer 分享于  点击 31883 次 点评:1

Java图像查看器,java查看器,MyCanvas.jav


MyCanvas.java ```javapackage PictureViewer;

import java.awt.;import java.awt.event.;import java.awt.image.*;public 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){ System.out.println("resize!!");

        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;      System.out.println("screen: w "+screen_width+" ,h "+screen_height+" ,p0 "+screen_proportion);    image_width = bi.getWidth(this);    image_height = bi.getHeight(this);    double image_proportion = 1.0 * image_height / image_width;    System.out.println("image: w "+image_width+" ,h "+image_height+" ,p1 "+image_proportion);    if(image_proportion > screen_proportion){        image_height = screen_height;        image_width = (int)(image_height / image_proportion);           System.out.println("  p1>p0  w= "+image_width);    }else{        image_width = screen_width;        image_height = (int)(image_width * image_proportion);           System.out.println("  p0>p1  h= "+image_height);    }    im = bi.getScaledInstance(image_width,image_height,Image.SCALE_SMOOTH);}

}

 MyFilter.java ```javapackage PictureViewer;import java.io.File;import java.io.FilenameFilter;public 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;     }   }

PictureViewer.java ```javapackage PictureViewer;

import java.awt.;import java.awt.event.;import java.awt.image.;import java.io.;import javax.imageio.*;

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); }

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) &amp;&amp; (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) &amp;&amp; (findex > 0));    next.setEnabled((files!=null) &amp;&amp; (findex<(files.length-1))); }

}```

相关栏目:

用户点评