imagepreview.java

来自「oraily的Swing hacks code」· Java 代码 · 共 84 行

JAVA
84
字号
import javax.swing.*;import javax.swing.filechooser.*;import java.awt.event.*;import javax.swing.event.*;import java.beans.*;import java.awt.Image;import java.awt.Dimension;import java.awt.*;import javax.imageio.*;import java.io.*;public class ImagePreview extends JPanel implements PropertyChangeListener {    private JFileChooser jfc;    private Image img;        public ImagePreview(JFileChooser jfc) {        this.jfc = jfc;        Dimension sz = new Dimension(200,200);        setPreferredSize(sz);    }        public void propertyChange(PropertyChangeEvent evt) {        try {            System.out.println("updating");            File file = jfc.getSelectedFile();            updateImage(file);        } catch (IOException ex) {            System.out.println(ex.getMessage());            ex.printStackTrace();        }    }        public void updateImage(File file) throws IOException {        if(file == null) {            return;        }                img = ImageIO.read(file);        repaint();    }        public void paintComponent(Graphics g) {        // fill the background        g.setColor(Color.gray);        g.fillRect(0,0,getWidth(),getHeight());                if(img != null) {            // calculate the scaling factor            int w = img.getWidth(null);            int h = img.getHeight(null);            int side = Math.max(w,h);            double scale = 200.0/(double)side;            w = (int)(scale * (double)w);            h = (int)(scale * (double)h);                        // draw the image            g.drawImage(img,0,0,w,h,null);                        // draw the image dimensions            String dim = w + " x " + h;            g.setColor(Color.black);            g.drawString(dim,31,196);            g.setColor(Color.white);            g.drawString(dim,30,195);                    } else {                        // print a message            g.setColor(Color.black);            g.drawString("Not an image",30,100);        }    }                public static void main(String[] args) {        JFileChooser jfc = new JFileChooser();        ImagePreview preview = new ImagePreview(jfc);        jfc.addPropertyChangeListener(preview);        jfc.setAccessory(preview);        jfc.showOpenDialog(null);    }}

⌨️ 快捷键说明

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