2015-02-24 4 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

+0

, когда я пытаюсь, у меня есть проблема с пути или URL-адресом! – shmoolki

ответ

2

Вы можете нарисовать изображение в JPanel как всю панель. Затем, когда размер панели изменяется, изображение будет изменяться вместе с ним. Вот быстро-н-загрязнен работоспособной демо:

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

1

Это, вероятно, уборщик просто изменить размер изображения. Я настоятельно рекомендую методы утилиты для изменения размера изображения, предоставленные filthyrichclients.

Я на самом деле очень рекомендую book, а также, как это было одна из немногих книг, которые на самом деле продемонстрировали мощь свинга ...

После того, как у вас есть код, вы хотите позвонить

createCompatibleImage(myImage, myWidth,myHeight); 
+0

Спасибо! Но первый ответ лучше для моего случая, но я даю вам преимущество, и я перехожу к вашим разным ответам и даю вам преимущество, спасибо – shmoolki

+0

Спасибо, приятно, когда опросчики делают это –