Mam do wyświetlenia obrazek w JFrame ale potrzebuje też by ten obrazek zmieniał swój rozmiar proporcjonalnie do okna.
Kod do wyświetlenia obrazka.
import java.awt.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Obrazek extends JPanel{
Image img;
int x = 0, y = 0;
public void paintComponent(Graphics g){
super.paintComponent(g);
File plikObrazka = new File("D:/PPJ/Proba/src/pjwstk.jpg");
try {
img = ImageIO.read(plikObrazka);
} catch (IOException e) {
System.err.println("Blad odczytu obrazka");
e.printStackTrace();
}
g.drawImage(img, x, y, null);
}
public Dimension getPreferredSize(){
return new Dimension(400, 400);
}
public static void main(String [] args){
JFrame frame = new JFrame("Rysowanie ");//utworzenie okna ramowego
Obrazek graph = new Obrazek(); //utworzenie panelu do rysowania
frame.getContentPane().add(graph); //dodanie panelu do okna ramowego
frame.setLocation(100, 100); //lokalizacja okna na ekranie
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //obsługa zamkniecia okna
frame.setPreferredSize(null);
frame.pack(); //upakowanie okna
frame.show(); //wyswietlenie okna na ekranie
}
}
To samo tyczy się rysowanych figur za pomocą np. drawRect itd... by one także zmieniały swój rozmiar w zależności od rozciągania okienka.
Użycie getWidth(), getHeight() w metodach rysujących nie rozwiązuje problemy gdyż jeżeli współrzędne początkowe nie są na 0,0 to ucina dalszą część figury (nie widać jej niezależnie od rozmiaru okna, przydało by się jakieś skalowanie).