Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    adatta immagine alla finestra JPanel

    Ciao, sono riuscito ad inserire lo sfondo che volevo nel mio JPanel.
    Adesso il problema è che non adatta l'immagine alla finestra che io imposto in netBeans nella schermata design.
    Come faccio a dirgli di adattare l'immagine automaticamente a seconda della grandezza della finestra?
    Questo è il codice del mio JPanel:
    codice:
    public class backgroundedPanel extends javax.swing.JPanel
    {
        protected Image img;
    
        public backgroundedPanel(String localURL)
        {
            super();
            try
            {this.img = ImageIO.read(getClass().getResource(localURL));}
            catch (IOException ex)
            {System.out.print("Impossibile leggere l'immagine per creare il pane \n");}
        }
    
        @Override
    
        protected void paintComponent(Graphics g) {
            if (img == null) {
                super.paintComponent(g);
            } else {
                int panelWidth = getWidth();
                int panelHeight = getHeight();
                int imageWidth = img.getWidth(null);
                int imageHeight = img.getHeight(null);
    
                // Repeats the draw of the image many times as necessary
                // to fill the entire surface of the panel.
                for (int y = 0; y < panelHeight; y += imageHeight) {
                    for (int x = 0; x < panelWidth; x += imageWidth) {
                        g.drawImage(img, x, y, null);
                    }
                }
            }
        }
    
        /* il metodo "setBounds" si occupa di posizionare e dimensionare un elemento grafico. Noi creiamo
         * qui una versione "facilitata"  di  questo  metodo  che dimensiona AUTOMATICAMENTE il pane  se-
         * condo le dimensioni dell'immagine, pertanto in ingresso riceve solo due coordinate          */
        public void setBounds(int x, int y)
        {
            super.setBounds(x,y,img.getWidth(this),img.getHeight(this));
        }
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: adatta immagine alla finestra JPanel

    Originariamente inviato da Salinas
    codice:
        /* il metodo "setBounds" si occupa di posizionare e dimensionare un elemento grafico. Noi creiamo
         * qui una versione "facilitata"  di  questo  metodo  che dimensiona AUTOMATICAMENTE il pane  se-
         * condo le dimensioni dell'immagine, pertanto in ingresso riceve solo due coordinate          */
        public void setBounds(int x, int y)
        {
            super.setBounds(x,y,img.getWidth(this),img.getHeight(this));
        }
    Vorrei chiarire la questione su questo tuo setBounds.
    Nell'altra tua discussione non ci ho fatto immediatamente caso in effetti .... sono rimasto subito ingannato dal nome e ho detto che è un override. No, il tuo non è un override, hai usato lo stesso nome ma hai messo solo 2 parametri e non c'è un setBounds simile, quindi hai fatto un overload.

    Ma a parte questo (distrazione mia ...) il "vero" setBounds serve solo se questo tuo pannello lo metti in un contenitore che non ha un layout manager.
    Leggi cosa dicevo qui riguardo le "dimensioni" dei componenti.
    Se come ho visto nell'altra discussione, il contenitore usa un org.jdesktop.layout.GroupLayout (che tra l'altro è un layout manager esterno, non del framework "standard"), allora setBounds credo proprio che non serva a nulla.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    [RISOLTO]

    hai ragione, infatti dopo averlo levato e aggiustato il codice, adesso lo posso tranquillamente ridimensionare come voglio tramite il designManager.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.