dopasowanie rozmiaru obrazka java

0

Witam. Mam przykładowy kod programu:

/*

  • BorderLayoutDemo.java

*/

import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
class Obraz extends JPanel{
JButton but=new JButton("Przycisk");

public void paintComponent(Graphics g){
	Graphics2D g2=(Graphics2D)g;
	MediaTracker tr=new MediaTracker(this);
	Image im=Toolkit.getDefaultToolkit().getImage("D:/mug.gif");
	tr.addImage(im, 1);
	try{
	tr.waitForID(1);
	}catch(InterruptedException e){
		
		Thread.currentThread().interrupt();
	}
System.out.println(im.getWidth(this));
System.out.println(im.getHeight(this));

g2.drawImage(im, 3, 140,10,10,this);
}

}
public class BorderLayoutDemo {
public static boolean RIGHT_TO_LEFT = false;

public static void addComponentsToPane(Container pane) {
    
    if (!(pane.getLayout() instanceof BorderLayout)) {
        pane.add(new JLabel("Container doesn't use BorderLayout!"));
        return;
    }
    
    if (RIGHT_TO_LEFT) {
        pane.setComponentOrientation(
                java.awt.ComponentOrientation.RIGHT_TO_LEFT);
    }
    
    JButton button = new JButton("Button 1 (PAGE_START)");
    pane.add(button, BorderLayout.PAGE_START);
    
    //Make the center component big, since that's the
    //typical usage of BorderLayout.
    button = new JButton("Button 2 (CENTER)");
    button.setPreferredSize(new Dimension(200, 100));
    Obraz ob=new Obraz();
    ob.setPreferredSize(new Dimension(200,100));
    pane.add(ob, BorderLayout.CENTER);
    
    button = new JButton("Button 3 (LINE_START)");
    pane.add(button, BorderLayout.LINE_START);
    
    button = new JButton("Long-Named Button 4 (PAGE_END)");
    pane.add(button, BorderLayout.PAGE_END);
    
    button = new JButton("5 (LINE_END)");
    pane.add(button, BorderLayout.LINE_END);
}

/**
 * Create the GUI and show it.  For thread safety,
 * this method should be invoked from the
 * event dispatch thread.
 */
private static void createAndShowGUI() {
    
    //Create and set up the window.
    JFrame frame = new JFrame("BorderLayoutDemo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Set up the content pane.
    addComponentsToPane(frame.getContentPane());
    //Use the content pane's default BorderLayout. No need for
    //setLayout(new BorderLayout());
    //Display the window.
    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) {
    /* Use an appropriate Look and Feel */
    try {
        //UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
    } catch (UnsupportedLookAndFeelException ex) {
        ex.printStackTrace();
    } catch (IllegalAccessException ex) {
        ex.printStackTrace();
    } catch (InstantiationException ex) {
        ex.printStackTrace();
    } catch (ClassNotFoundException ex) {
        ex.printStackTrace();
    }
    /* Turn off metal's use bold fonts */
    UIManager.put("swing.boldMetal", Boolean.FALSE);
    
    //Schedule a job for the event dispatch thread:
    //creating and showing this application's GUI.
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            createAndShowGUI();
        }
    });
}

}

Jak zrobić by wczytany obraz zmienił swoj rozmiar (dopasował) do rozmiaru Panelu go otaczającego ? chodzi o to żebym w panelu widział cały obraz a nie tylko część.

0

g2.drawImage(im, 3, 140,10,10,this); - tą linijke spróbuj zmienic na g2.drawImage(im,par1,par2,par3,par4,par5,par6, this) - tzn tą samą funkcje tylko parametrami które odpowiadaja: 2 pierwsze za wielkosc obrazu który ma byc pokazany obrazek a 4 parametry podajesz wymiary obrazka które chcesz powiekszyc,

1 użytkowników online, w tym zalogowanych: 0, gości: 1