【问题标题】:how to make image resizeable如何使图像可调整大小
【发布时间】:2012-02-15 04:18:41
【问题描述】:

我尝试做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);
    }

}

但是当我从相机打开图像时,它总是显示超过帧大小 我不知道如何使图像符合我的帧大小?

【问题讨论】:

    标签: java image resizable


    【解决方案1】:

    为了放置你的全尺寸图片,你可以尝试制作你自己的JPanel,重写paintComponent方法,在这个方法里面使用g.DrawImage,

    其他解决方案可能更简单,将 JPanel 尺寸设置为与您的 Image 相同的尺寸并将此 JPanel 添加到 JScrollPane ,这样将显示滚动条进行导航

    【讨论】:

      【解决方案2】:

      取决于实际大小(以像素为单位)

      1) 将Image / BufferedImage 设置为Icon/ImageIconJLabel,然后图像将可调整为实际大小(以像素为单位)

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

      【讨论】:

        猜你喜欢
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        • 2010-12-29
        • 2015-04-30
        相关资源
        最近更新 更多