crash outside control (Normal User)
Expert
Messaggi: 217
Iscritto: 12/02/2008
|
Salve a tutti, quando disegno un'immagine il resto dei controlli non vengono visualizzati... Però se ci passo con il mouse sopra si, tranne i colori di sfondo dei vari panel... C'è un modo per ovviare ?
Questo è il codice che uso per disegnare l'immagine:
Codice sorgente - presumibilmente Java |
Image img = getImage (getDocumentBase (), "darkangel.jpg"); //imm è un panel g.drawImage(img, 50, 20, imm); }
|
Grazie a tutti
Ultima modifica effettuata da crash outside control il 17/01/2010 alle 20:48 |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
se vuoi disegnare un'immagine dentro un jpanel non devi fare l'overload di paint ma di paintComponent, richiamando prima il metodo della superclasse con super, e poi aggiungendo il tuo codice.
|
|
crash outside control (Normal User)
Expert
Messaggi: 217
Iscritto: 12/02/2008
|
Cosa intendi con:
Postato originariamente da netarrow:
richiamando prima il metodo della superclasse con super, e poi aggiungendo il tuo codice. |
Così ?
Codice sorgente - presumibilmente Java |
{ super.init(); Image img = getImage (getDocumentBase (), "darkangel.jpg"); g.drawImage(img, 0, 0, imm); }
|
Non credo proprio perchè non ha nè senso, nè funziona... |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
Non ha senso? Ma hai studiato un minimo le basi del linguaggio prima di venire a postare?
Cmq così:
Codice sorgente - presumibilmente Java |
{ super.paintComponent(g); Image img = getImage (getDocumentBase (), "darkangel.jpg"); g.drawImage(img, 0, 0, imm); }
|
Se non ti funziona neanche questo posta l'intero codice del programma.
|
|
crash outside control (Normal User)
Expert
Messaggi: 217
Iscritto: 12/02/2008
|
Credevo non avesse senso richiamare il metodo init()...
Comunque non funziona...
Ecco il codice:
Codice sorgente - presumibilmente Java |
package javaapplication8; import java.awt.*; import javax.swing.*; public class prova extends JApplet { public void init() { add(imm, "Center"); } { //super.paintComponent(g); //provato con tutti e due i modi... avevo letto che paintComponents() //è utilizzato per disegnare gli oggetti... super.paintComponents(g); Image img = getImage (getDocumentBase (), "darkangel.jpg"); g.drawImage(img, 0, 0, imm); } }
|
Comunque sul libro che ti dissi, non è trattata questa cosa... sapresti consigliarmi qualche buon libro per cominciare?
|
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
Ultima modifica effettuata da netarrow il 18/01/2010 alle 21:44 |
|
crash outside control (Normal User)
Expert
Messaggi: 217
Iscritto: 12/02/2008
|
Grazie per i libri proposti
Comunque, ho scritto una classe che estende la classe JPanel. In questo modo quando dichiaro un oggetto di quella classe, dovrei avere il panel con l'immagine disegnata sopra... e invece non va >_<
Il punto è che se metto:
Codice sorgente - presumibilmente Plain Text |
E poi dichiaro l'oggetto, la linea la disegna. Mi chiedo quindi se ci sia qualche errore qui:
Codice sorgente - presumibilmente Plain Text |
g.drawImage(img, 0, 0, this);
|
Grazie mille |
|
netarrow (Admin)
Guru^2
Messaggi: 2502
Iscritto: 12/05/2004
|
Ti posto un esempio, mette come sfondo l'immagine a aggiunge in alto un bottone, se era questo quello che volevi:
Codice sorgente - presumibilmente Java |
import java.awt.*; import javax.swing.*; class Pannello extends JPanel { public Pannello (Image img ) { this.img = img; } { super.paintComponent(g); g.drawImage(img, 0, 0, this); } } public class Prova extends JApplet { private Pannello p; public void init() { p = new Pannello(getImage(getDocumentBase(), "a.jpg")); } public void start() { b.setText("prova"); p.add(b); } }
|
Però non è così che dovrebbe funzionare il forum, cioè tentare alla cieca per poi farsi risolvere i problemi dal forum è una perdita di tempo per tutti: prima ti studi le basi poi quello che non torna lo chiedi.
Ultima modifica effettuata da netarrow il 18/01/2010 alle 23:31 |
|
crash outside control (Normal User)
Expert
Messaggi: 217
Iscritto: 12/02/2008
|
Ehm... Non funziona
Comunque quella classe non era alla cieca... >_<
L'unico difetto che c'aveva la mia classe rispetto alla tua, è che non avevo passato parametri al costruttore e l'immagine era sempre la stessa.
Cioè, tu hai fatto:
Codice sorgente - presumibilmente Java |
public imgPanel (Image img ) { this.img = img; }
|
Io:
Codice sorgente - presumibilmente Java |
public imgPanel() { img = tk.getImage("darkangel.jpg"); }
|
Hai per caso altre idee ? Ultima modifica effettuata da crash outside control il 19/01/2010 alle 0:10 |
|