• (转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小


    一、问题:

    一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件

    二、解决这个问题,需要用到两个类:

    Java.awt.Image类 javax.swing.ImageIcon类
    1.java.awt.Image是个抽象类,这个过程中用到的参数和函数如下: (1)static int SCALE_DEFAULT    表示默认的图像缩放算法。 (2)public Image getScaledInstance(int width,int height,int hints) 创建此图像的缩放版本。返回一个新的 Image 对象,默认情况下,该对象按指定的 width 和 height 呈现图像。即使已经完全加载了初始源图像,新的 Image 对象也可以被异步加载。 如果 width 或 height 为负数,则替换该值以维持初始图像尺寸的高宽比。如果 width 和 height 都为负,则使用初始图像尺寸。
    参数: width - 将图像缩放到的宽度。 height - 将图像缩放到的高度。 hints - 指示用于图像重新取样的算法类型的标志。 返回: 图像的缩放版本。
    2.javax.swing.ImageIcon类 (1)这儿用到这个构造函数: ImageIcon(String filename)        根据指定的文件创建一个 ImageIcon对象 (2)Image getImage()             返回此图标的 Image。 (3)void setImage(Image image)   设置由此图标显示的图像。
    三、关键性代码

    1. JLabel jlb = new JLabel();  //实例化JLble  
    2. int width = 50,height = 50; //这是图片和JLable的宽度和高度  
    3. ImageIcon image = new ImageIcon("image/img1.jpg");//实例化ImageIcon 对象  
    4. /*下面这句意思是:得到此图标的 Image(image.getImage()); 
    5. 在此基础上创建它的缩放版本,缩放版本的宽度,高度与JLble一致(getScaledInstance(width, height,Image.SCALE_DEFAULT )) 
    6. 最后该图像就设置为得到的缩放版本(image.setImage) 
    7. */  
    8. image.setImage(image.getImage().getScaledInstance(width, height,Image.SCALE_DEFAULT ));//可以用下面三句代码来代替  
    9. //Image img = image.getImage();  
    10. //img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);  
    11. //image.setImage(img);  
    12. jlb.setIcon(image);  
    13. jlb.setSize(width, height);  


    四、程序实例

      1. /*java中设置图片自适应Jlable的大小*/  
      2. package test1;  
      3.   
      4. import javax.swing.*;  
      5. import java.awt.Image;  
      6.   
      7. public class ImageSetTest extends JFrame {  
      8.     private JLabel jlb = new JLabel();  
      9.     private ImageIcon image;  
      10.     private int width = 400, height = 400;  
      11.   
      12.     public ImageSetTest() {  
      13.         this.setSize(800, 600);  
      14.         this.setLayout(null);  
      15.   
      16.         image = new ImageIcon("image/img1.jpg");  
      17.         // image.setImage(image.getImage().getScaledInstance(width, height,Image.SCALE_DEFAULT));  
      18.         Image img = image.getImage();  
      19.         img = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);  
      20.         image.setImage(img);  
      21.         jlb.setIcon(image);  
      22.   
      23.         this.add(jlb);  
      24.         jlb.setSize(width, height);  
      25.         this.setVisible(true);  
      26.     }  
      27.   
      28.     public static void main(String[] args) {  
      29.         new ImageSetTest();  
      30.     }  
      31. }  
  • 相关阅读:
    Android面向切面编程(AOP)(转)
    Android性能优化
    Android 性能分析之TraceView使用(应用耗时分析)
    Lint检查选项
    Android Chromium WebView Crash
    Could not get unknown property 'assembleRelease' for project ':app' of type org.gradle.api.Project.
    Android studio gradle 无法获取 pom文件
    android 7.0 因为file://引起的FileUriExposedException异常
    Android双系统实现
    git 安装 和 基本操作
  • 原文地址:https://www.cnblogs.com/hu-yewen/p/6131907.html
Copyright © 2020-2023  润新知