Newsgroup: it.comp.java
Titolo: Help me

Salve a tutti,
<introduzione>
so che questa richiesta è già stata fatta tante volte, lo so perchè ho
letto pù o meno tutti i messaggi su google sull'argomento, ho visto le
pagine della sun, insomma ho studiato!!! ;__;
Perciò vi prego di rispondermi sono disperata.
<fine introduzione>
Devo inserire un'immagine di sfondo a un JPanel che sta dentro un
JFrame. L'immagine è trasparente, ma questo è un problema secondario,
il mio problema è che non riesco a inserire l'immagine di sfondo. Non
la visualizza.
Ovviamente sto "sovrascrivendo" il metodo paint della classe JPanel.
Per la precisione ho creato una classe Sfondo che estende JPanel e che
fa solo quello (sovrascrivere paint). Nel frame ho un'istanza di
Sfondo a cui aggiungo altri componenti in un gridbaglayout.
Non capisco perchè non mi mostra l'immagine di sfondo, il codice che
ho usato è abbastanza semplice:
import java.awt.*;
import javax.swing.JPanel;
public class Sfondo extends JPanel {
  private Image
immagine=Toolkit.getDefaultToolkit().getImage("sfondo.png");
  public void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawImage(immagine, 0, 0, this);
  }
}
Ha qualche errore?
Oppure devo benedire il case con l'acqua di Lourdes?

tiro a indovinare, magari ci azzecco.... l'estensione file immagine è in
maiuscolo.

 Oppure devo benedire il case con l'acqua di Lourdes?
il codice sembra corretto.. potrebbe essere un errore
nel nome del file.. oppure il tuo programma non viene
eseguito nella directory dove ti trovi (per esempio
se lo esegui da dentro un IDE) e quindi il file con l'immagine
non viene trovato..
inserisci la seguente linea nel tuo programma e il suo output
ti potrebbe dare una mano alla risoluzione del problema.
System.out.println( "curdir: " + System.getProperty( "user.dir" ) );
-- 
                Roberto Nunnari -software engineer-
                     mailto:
ro...@nunnisoft.ch
 
http://www.nunnisoft.ch
   Residenza Boschetto 12           tel/fax: 
+41-91-6046511
   6935 Bosco Luganese        """    mobile: 
+41-76-3208561
   Switzerland               (o o)
========================oOO==(_)==OOo========================

 Oppure devo benedire il case con l'acqua di Lourdes? 
Ciao, io uso questo e metto l'immagine nella dir classes: 
Image sfondo = new ImageIcon (tuoFrame.class.getResource("Immagini/
sfondo.jpg")).getImage (); 
    JPanel pnlMain = new MyPanel(sfondo); 
 
Rigel 
 
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

System.out.println( "curdir: " + System.getProperty( "user.dir" ) );
Questo l'ho escluso a priori perchè usavo l'immagine per ottenere lo
stesso effetto con un LayeredPane, trasparente di natura.
Non è che l'errore sta nell'aggiungere (neccessariamente) i componenti
dopo?
Ma il super.paint(g) dovrebbe rimediare a quello...
-__-
sigh

 dopo?
??? cosa vuoi dire? Metti altri componenti nel panel dopo aver messo
l'immagine? Se cosi' allora potresti chiamare setOpaque(false) per
dare la trasparenza a quei componenti in modo da poter vedere
l'immagine nel panel sotto..
Ho provato il tuo codice e funziona.. ma se sposto l'immagine
in un'altra cartella allora non funziona piu', e questo senza
dare nessun messaggio d'errore.


 }
La getImage dell'ImageIcon assicura il caricamento immediato
dell'immagine (l'ho trovato da qualche parte nel sito della Sun)
Spero ti sia d'aiuto, Strapz.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

dare nessun messaggio d'errore.
Volevo lasciar perdere perchč avevo risolto con i layeredpane, ma ora
mi trovo di nuiovo a doverlo usare.
Quindi vi prego aiutatemi, perň fidatevi di me se vi dico che:
L'immagine *č* nella cartella giusta (a parte, che come ho detto, in
altri contesti la vedeva tranquillamente, ho provato anche il tuo
codice e, disperata, ho inserito l'immagine in ogni cartella che il
buon JBuilder mi crea)
Ho provato anche ad aggiungere questo
    g.drawString("Angela", 10, 10);
nel codice del paint e non me lo disegna.
quindi il problema č altrove.
Ora mi serve usarlo in uno scrollpane, quindi ho creato la classe che
estende lo scroll pane e lo instanzio in un'latra classe in questo
modo:
  private JScrollPane sp_principale = new Sfondo2();
dopo di che aggiungo il pannello relativo in questo modo:
  sp_principale.getViewport().add(pannello, null);
non aggiungo background, setto solo le dimensioni.


ha scritto:
A questo punto mi basterebbe anche solo rendere trasparente lo scroll
pane ma fare setOpaque(false) lo lascia indifferente.
Ma mi si sarà guastata la VM?