Salve, sapete dirmi se è possibile impostare un'immagine di sfondo in una JPanel?
O se esiste un'oggetto (tipo JLabel) per risolvere il problema?
O, ancora meglio, se la JFrame supporta una proprietà come immagine di sfondo?
Grazie!
CIAO!
Catia
Salve, sapete dirmi se è possibile impostare un'immagine di sfondo in una JPanel?
O se esiste un'oggetto (tipo JLabel) per risolvere il problema?
O, ancora meglio, se la JFrame supporta una proprietà come immagine di sfondo?
Grazie!
CIAO!
Catia
Estendi JPanel e fai l'override del metodo paintComponent.Originariamente inviato da catia.ci
Salve, sapete dirmi se è possibile impostare un'immagine di sfondo in una JPanel?
O se esiste un'oggetto (tipo JLabel) per risolvere il problema?
O, ancora meglio, se la JFrame supporta una proprietà come immagine di sfondo?
Grazie!
CIAO!
Catia
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Puoi usare una JLabel settando le dimensioni uguali a quelle del JPanel e poi col metodo setIcon setti l'immagine di sfondo della JLabel (oppure l'immagine la puoi specificare direttamente nel costruttore della JLabel)
fai come ha detto andbin!
Estendi la classe JPanel e la chiami come vuoi tu (ad esempio BackgroundedFrame) e praticamente ti crei una classe personalizzata che abbia uno sfondo! Ti faccio un esempio:
Ovviamente partendo da questo puoi creare altri costruttori sovraccarichi magari passandogli direttamente la stringa con il percorso del file, poi te la converti in File e poi in BufferedImage per richiamarti il metodo setImage!codice:public class BackgroundedFrame extends JPanel{ BufferedImage img; int width; int height; public BackgroundedFrame(File f){ super(true); //crea un JPanel con doubleBuffered true try{ setImage(ImageIO.read(f)); } catch(Exception e) {} public void setImage(BufferedImage img){ this.img = img; width = img.getWidth(); height = img.getHeight(); } // sovrascrivi il metodo paintComponent passandogli l'immagine partendo dalle coordinate 0,0 senza usare un ImageObserver (null) public void paintComponent(Graphics g){ super.paintComponent(g); g.drawImage(img, 0, 0, null); } }
Tutto chiaro? Se hai problemi chiedi pure! Ciao!
Giovanni
Grazie dell'aiuto! Mi sapete però dire in quale libreria posso trovare la classe BufferedImage ? E' supportata in Java 1.5.0???
Fatemi sapere!
java.awt.image.BufferedImage disponibile da ... sempre.Originariamente inviato da catia.ci
Mi sapete però dire in quale libreria posso trovare la classe BufferedImage ? E' supportata in Java 1.5.0???
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Scusate, una domanda. E per sovrapporre due immagini come si può fare?
Io avevo provato così, ma naturalmente non funziona.
codice:import java.awt.*; import javax.imageio.*; import javax.swing.*; import java.io.*; import java.awt.image.BufferedImage; public class Immagini { public static void main (String args []) { JFrame f=new JFrame ("Immagini"); File file=new File(percorso); JPanel p=new BackgroundedFrame(file); File file1=new File(percorso); p=new BackgroundedFrame(file1); f.add(p); f.setVisible(true); } } class BackgroundedFrame extends JPanel { BufferedImage img; int width; int height; public BackgroundedFrame(File f) { super(true); //crea un JPanel con doubleBuffered true try { setImage(ImageIO.read(f)); } catch(Exception e) {} } public void setImage(BufferedImage img) { this.img = img; width = img.getWidth(); height = img.getHeight(); } // sovrascrivi il metodo paintComponent passandogli l'immagine partendo dalle coordinate 0,0 senza usare un ImageObserver (null) public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(img, 0, 0, null); } }
appena risolto..grazie comunque