(轉) 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)   設置由此圖標顯示的圖像。
三、關鍵性代碼

[java]  view plain copy
 print?
  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);  


四、程序實例

 

 

[java]  view plain copy
 print?
    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. }  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM