如何使图像可调整大小

时间:2012-02-15 04:18:41

标签: java image resizable

我尝试制作imageviewer,代码在下面

import javax.swing.*;
import java.awt.event.*;
import java.IO.*;

public class javaImageViewer extends JFrame{
    public javaImageViewer(){

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setSize(200,100);
        JButton openButton = new JButton("Open Images");
        getContentPane().add(openButton);

        openButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e){
           JFileChooser chooser = new JFileChooser(".");
           int status = chooser.showOpenDialog(javaImageViewer.this);
           if(status == JFileChooser.APPROVE_OPTION){
               try{
                   JFrame frame = new JFrame();
                   JLabel label = new JLabel(new ImageIcon(chooser.getSelectedFile().toURL()));
                   frame.add(label);
                   frame.setSize(500,500);
                   frame.setVisible(true);
               }
               catch(Exception e2){
                   System.out.println("Error"+e2);
               }
           }

           }

      });   
    }
    public static void main(String [] args){
        javaImageViewer tim = new javaImageViewer();
        tim.setVisible(true);
    }

}

但是当我从相机打开图像时,它总是显示在帧大小上 我不知道如何使图像符合我的画面尺寸?

2 个答案:

答案 0 :(得分:1)

为了使用Full Size放置图像,您可以尝试制作自己的JPanel,覆盖paintComponent方法,并在此方法中使用g.DrawImage,

其他解决方案也许更容易设置JPanel dimesion与你相同的尺寸Image并将此JPanel添加到JScrollPane,这样就会显示滚动条进行导航

答案 1 :(得分:1)

取决于像素的实际大小

1)将Image / BufferedImage作为Icon/ImageIcon添加到JLabel,然后图片将可调整大小,以实际大小为单位

2)使用Image

调整Image#getScaledInstance(int width, int height, int hints)的大小