Buonasera a tutti!
Ho creato una classe per visualizzare un immagine, ma ho alcuni problemi durante il funzionamento...
Lo scopo della classe (per ora) è ricevere tramite il costruttore il percorso dell'immagine da visualizzare e visualizzarla a schermo. Un lavoro del genere mi funzionava bene estendendo JLabel usando una ImageIcon, ma ora devo fare qualche operazione in più...
L'immagine dovrebbe essere caricata in una BufferedImage (imageOriginal), trasformata in qualche modo (con l'unico pezzo di codice che funziona) e il risultato (che credo sia una nuova BufferedImage) deve essere visualizzato sullo schermo.
Mi è stato consigliato di scrivere direttamente sul JPanel attraverso il metodo paint(), ma non funziona nulla... come mai?
Cosa e dove ho sbagliato?
Ci sono modi più furbi per risolvere questo problema?
codice:
package image;
import java.awt.image.BufferedImage;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
public class ImagePanel extends JPanel {
private BufferedImage imageOriginal;
private BufferedImage imageCropped;
public ImagePanel(String imagePath) {
super();
ImageIcon icon = new ImageIcon(imagePath);
Image image = icon.getImage();
imageOriginal = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g2Original = imageOriginal.createGraphics();
g2Original.drawImage(image, icon.getIconWidth(), icon.getIconHeight(), this);
imageCropped = imageOriginal;
this.repaint();
}
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(imageCropped, null, imageCropped.getWidth(), imageCropped.getHeight());
}
}