Newsgroup: it.comp.java
Titolo: Il Panel ti carica ?

 Unite for Java - Join the Java Lobby now! (
http://www.javalobby.org
)     <
============================================================================

 sicurezza.
Non mi sembra proprio che un getImage sul defaultToolkit dia fastidio
a Netscape, purche' l'URL dell'immagine da prelevare sia sullo stesso
server che ospita l'applet.
Io ho scritto questo metodo statico da inserire in una generica classe
Utility (o altro nome a piacere...), che consente di prelevare
un'immagine
e restituisce un oggetto Image. Funziona sia da applet che da
applicazione.
Sicuramente si puo' fare di meglio, pero' questo metodo ti puo' essere
utile
per iniziare. Te lo invio.
Ciao,
  Marina
--------------------------------
        /**
        * Serve per caricare le icone associate all'applicazione.
        *
        * @param        s       - URL dell'immagine da convertire in
icona
        * @param        height  - altezza icona
        * @param        width   - lunghezza icona
        * @param        useMediaTracker - se true restituisce l'immagine
solo dopo che e' completamente caricata
	* @param	comp - un Component che serve al MediaTracker
        *
        * <pre>
        * @return       Image   icona 
        * </pre>
        *
        */
        public static Image getIcon(String urlGif, int width, int
height, boolean useMediaTracker, Component comp)        
	{
                Panel p = new Panel();
                URL urlim;
                try
                {  
                        urlim= new URL (urlGif);
                }
                catch (MalformedURLException ex)
                {
                        ex.printStackTrace();
                        urlim=null;
                }
                Image image=null;
                boolean existImage=true;
 
                if (urlim!=null)
                {
                        // controllo che l'immagine esista
                        URLConnection urlConn;
                        try
			{
                                urlConn=urlim.openConnection();
			}
			catch (IOException e)
                        {
                                image=null;
                                urlConn=null;
                        }
 
 
                        if ((urlConn!=null) &&
(urlConn.getContentLength()>=0))
                        {
                                //l'immagine esiste
                                // carico l'immagine
                                image =
Toolkit.getDefaultToolkit().getImage(urlim);
 
                                if (useMediaTracker)
                                {
					if (comp == null)
					    return null;
 
                                        // resize dell'immagine
                                        if ( (width>0) && (height>0) )
                                        {
                                                ImageFilter filter = new
ReplicateScaleFilter(width, height);
                                                ImageProducer producer =
new FilteredImageSource(image.getSource(), filter);
                                                image =
p.createImage(producer);
                                        }
 
                                        image.flush();
                                        MediaTracker tracker = new
MediaTracker(comp);
                                        tracker.addImage(image,0);
                                        try
                                        {
                                                tracker.waitForAll(0);
                                        }
                                        catch (Exception ex)
{ex.printStackTrace();}
                                        tracker=null;
 
                                }
                                // resize dell'immagine
                                else if ( (width>0) && (height>0) )
                                {
                                        ImageFilter filter = new
ReplicateScaleFilter(width, height);
                                        ImageProducer producer = new
FilteredImageSource(image.getSource(), filter);
                                        image = p.createImage(producer);
                                }
                        }
                }
                else image=null;
 
                p=null;
 
                System.gc();
                return image;
        }

utile per iniziare. Te lo invio.
Marina,
ti ringrazio per il codice ed i suggerimenti. Purtroppo Netscape NON ti
permette di caricare immagini tramite il Toolkit, e nemmeno tramite
getClass().getresource("pippo.gif"). L'unico modo per non scatenare
interventi della security (a parte firmare le applet) e' il
getClass().getResourceAsStream("pippo.gif").
In questo caso tutto funziona liscio, ma le risorse che vuoi leggere (non
solo grafica, ma qualsiasi file) devono risiedere in un .jar o in un .zip,
quindi ricordati di usare il tag "ARCHIVE=xxxx.zip".
Ho scritto un paio di metodi "da inserire in una generica classe Utility",
che ti permettono di capire se stai girando in un browser.
Mi pare sano anche il getParentApplet(), che ti ritorna l'Applet a cui e'
attaccato il componente che deve caricare l'immagine. Se getParentApplet()
!= NULL allora puoi caricare le immagini con una semplice
applet.getImage("bau.gif") e Netscape non se ne accorge nemmeno.
Se getParentApplet() e' NULL, stiamo girando come applicazione (o meglio, il
componente e' appiccicato ad una applicazione) e allora, vai di Toolkit !
Saluti,
Mik.
p.s.
- Notizie utili, codice, ecc. su : 
http://www.afu.com/javafaq.html
 la
migliore FAQ per Java.
- Per lo scritto di cui sopra, lieto di essere smentito...
============================================================================
   public boolean isRunningInBrowser()
   {
      Component p = this;
      while(p != null)
         if (p instanceof Applet) return(true);
         p = p.getParent();
      }
      return (false);
   }
   public Applet getParentApplet(Component p)
   {
      while(p != null)
         if (p instanceof Applet) return((Applet)p);
         p = p.getParent();
      }
      return (null);
