2015-02-24 129 views
1

我想在Jframe的某個區域顯示圖像,但圖像佔用大量空間。Java調整圖像大小

我想採取公平的精確尺寸。 我如何在Java中

做到這一點這是我簡單的代碼:

我願意,如果我沒有使用正確的方法或正確的類實例化圖像的任何建議。

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

public class ExempleDeplace extends JFrame{ 

    private JLabel myLabel; 

    public ExempleDeplace(){ 
     setLayout(new FlowLayout()); 
     setTitle("Fenetre, modele Duchi"); 
     setSize(500,700); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JLabel j = new JLabel(new ImageIcon("src/images/bateau.png")); 
     add(j); 
     setVisible(true); 
    } 

    public static void main (String[] args) {  
      ExempleDeplace c = new ExempleDeplace(); 
    } 
} 
+0

使用'ImageIO'首先將圖像作爲圖像加載,然後使用Image.getScaledInstance(...),然後從該圖像製作ImageIcon。 – ControlAltDel 2015-02-24 17:02:38

+0

當我嘗試我有一個問題的路徑或網址! – shmoolki 2015-02-24 17:05:40

回答

2

您可以將圖像作爲整個面板在JPanel中繪製。然後,無論何時調整面板大小時,圖像都會隨之調整大小。這裏有一個快速n-dirty可運行的演示:

import java.awt.BorderLayout; 
import java.awt.Graphics; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class ImgFrame extends JFrame { 

    private static BufferedImage IMG; 
    static{ 
     try { 
      IMG = ImageIO.read(new File("img/Original_Doge_meme.jpg")); //Replace with your image path 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    public ImgFrame(){ 
     add(new ImgPanel(), BorderLayout.CENTER); 
     setSize(500,700); 
     setVisible(true); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    } 

    class ImgPanel extends JPanel{ 
     @Override 
     public void paintComponent(Graphics g){ 
      super.paintComponent(g); 
      g.drawImage(IMG, 0, 0, getWidth(), getHeight(), this); 
     } 
    } 

    public static void main(String[] args){ 
     new ImgFrame(); 
    } 
} 
+0

謝謝,它的工作! – shmoolki 2015-02-24 17:09:13

1

只是調整圖像大小可能更乾淨。我強烈建議使用filthyrichclients提供的圖片大小調整實用程序方法。

其實我強烈建議book爲好,因爲它的實際表現出揮杆的力量的幾本書,一個...

一旦你的代碼,你會想打電話給

createCompatibleImage(myImage, myWidth,myHeight); 
+0

謝謝!但第一個答案更適合我的情況,但我給你upvote,我會給你不同的答案,並給你upvote,謝謝 – shmoolki 2015-02-24 19:24:07

+0

謝謝,這很好,當提問者這樣做 – 2015-02-24 23:43:32