Ciao a tutti. Il mio problema è creare un JPanel con un'immagine come sfondo, che sia in grado di ridimensionare l'immagine senza perdere definizione. Questo è il codice che ho scritto:
codice:
package OrdinePaniniServer;
import java.awt.*;
import javax.swing.*;
public class IntestationPanel extends JPanel {
private Image img;
public IntestationPanel(String pathName) {
//carico l'immagine
img = Toolkit.getDefaultToolkit().createImage(pathName+"\\index.jpg");
loadImage(img);
}
private void loadImage(Image img) {
try {
//faccio in modo che il programma non avanzi finché non viene caricata l'immagine
MediaTracker track = new MediaTracker(this);
track.addImage(img, 0);
track.waitForID(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
//disegno lo sfondo
setOpaque(false);
Image img1 = img.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_SMOOTH);
//JFrame f = new JFrame();
//JLabel l = new JLabel();
//l.setIcon(new ImageIcon(img1));
//f.getContentPane().add(l);
//f.setVisible(true);
//f.pack();
g.drawImage(img1, 0, 0, this.getWidth(), this.getHeight(), null);
super.paintComponent(g);
}
}
Premesso che, senza img1, quindi senza il getScaledInstance(), l'immagine viene visualizzata, ma con una perdità di qualità dovuta alla deformazione, qualcuno mi sa dire perché l'immagine non viene visualizzata nel pannello, a meno che non la mostri anche in un frame separato, come nella parte commentata del metodo paintComponent?