Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA Swing] - Inserire immagini di sfondo a Panel

    Volevo inserire un immagine di sfondo ad un JPanel. Su internet ho trovato consigli che mi hanno portato ad usare una classe apposita che estende JPanel e caricare quindi le URL delle immagini da costruttore.

    Il codice nel costruttore è questo:
    Codice PHP:
    public void setContentPanel() throws MalformedURLExceptionIOException 
            
    contentpanel = new JPanel(); 
            
    imageURL1 = new URL ("http://farm4.static.flickr.com/3058/3067333469_3efd0073a9_o.jpg");
            
    image_base1 ImageIO.read(imageURL1);
            
    contentnorthpanel = new BackgroundedPanel(image_base1);
            
    imageURL2 = new URL ("http://farm4.static.flickr.com/3054/3068170810_d347ceda49_o.jpg");
            
    image_base2 ImageIO.read(imageURL2);
            
    contentcenterpanel = new BackgroundedPanel(image_base2);        
            
    imageURL3 = new URL ("http://farm4.static.flickr.com/3035/3067333539_ed21a00770_o.jpg");
            
    image_base3 ImageIO.read(imageURL3);
            
    contentsouthpanel = new BackgroundedPanel(image_base3);       
            
    contentpanel.add(contentnorthpanel);
            
    contentpanel.add(contentcenterpanel);
            
    contentpanel.add(contentsouthpanel);
        } 
    Mentre la classe che serve per elaborare le immagini è la seguente:
    Codice PHP:
    package facesgame.image;

    import java.awt.*;
    import javax.swing.JPanel;

    public class 
    BackgroundedPanel extends JPanel {
        private 
    Image img;

        public 
    BackgroundedPanel(Image img) {
            
    this.img img;
        }

        @
    Override
        
    public void paintComponent(Graphics g) {
            
    Dimension panelSize getSize();
            
    int width img.getWidth (this);
            
    int height img.getHeight (this);
            for (
    int y 0panelSize.height+= height) {
                for (
    int x 0panelSize.width+= width) {
                    
    g.drawImage (imgxythis);
                }
            }
        }

    Il programma non da errori di nessun genere, ma in runtime NON mostra le immagini... cosa posso fare?!

    PS. Dato che ho intenzione di cambiare le immagini con un click su bottone... questo metodo va bene o mi conviene usare qualcos'altro che abbia un setXXX (setImageIcon, o simili, per es.)?

    Grazie a tutti!!!!!!!!!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    106
    Io da qualche parte ho trovato questo codice che ho riutilizzato e non mi dà problemi. Adattalo alle tue esigenze, se puo' esserti utile.

    public class ImagePanel extends JPanel {

    private Image img;

    public ImagePanel(String img) {
    this(new ImageIcon(img).getImage());
    }

    public ImagePanel(Image img) {
    this.img = img;
    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
    setPreferredSize(size);
    setMinimumSize(size);
    setMaximumSize(size);
    setSize(size);
    setLayout(null);
    }

    public void paintComponent(Graphics g) {
    g.drawImage(img, 0, 0, null);
    }

    ovviamente la richiami con:

    ImagePanel panel = new ImagePanel(new ImageIcon("Img/pathImmagine.gif").getImage());

  3. #3
    Alla fine ho usato JLabel e ImageIcon... ma grazie comunque!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.