Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Immagine vs altri controlli
Forum - Java - Immagine vs altri controlli

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 20:47
Domenica, 17/01/2010
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

  1. public void paint(Graphics g) {
  2.         Image img = getImage(getDocumentBase(), "darkangel.jpg");
  3.         //imm è un panel
  4.         g.drawImage(img, 50, 20, imm);
  5.     }



Grazie a tutti :)

Ultima modifica effettuata da crash outside control il 17/01/2010 alle 20:48


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 0:01
Lunedì, 18/01/2010
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.



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 1:34
Lunedì, 18/01/2010
Cosa intendi con:
Testo quotato

Postato originariamente da netarrow:

richiamando prima il metodo della superclasse con super, e poi aggiungendo il tuo codice.



Così ?

Codice sorgente - presumibilmente Java

  1. public void paintComponent(Graphics g)
  2.     {
  3.        
  4.         super.init();
  5.         Image img = getImage(getDocumentBase(), "darkangel.jpg");
  6.         g.drawImage(img, 0, 0, imm);
  7.  
  8.     }


Non credo proprio perchè non ha nè senso, nè funziona... 8-|


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 12:30
Lunedì, 18/01/2010
Non ha senso? Ma hai studiato un minimo le basi del linguaggio prima di venire a postare?

Cmq così:

Codice sorgente - presumibilmente Java

  1. public void paintComponent(Graphics g)
  2.     {
  3.         super.paintComponent(g);
  4.         Image img = getImage(getDocumentBase(), "darkangel.jpg");
  5.         g.drawImage(img, 0, 0, imm);
  6.  
  7.     }



Se non ti funziona neanche questo posta l'intero codice del programma.



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 16:43
Lunedì, 18/01/2010
Credevo non avesse senso richiamare il metodo init()...
Comunque non funziona...
Ecco il codice:

Codice sorgente - presumibilmente Java

  1. package javaapplication8;
  2.  
  3. import java.awt.*;
  4. import javax.swing.*;
  5.  
  6. public class prova extends JApplet {
  7.  
  8.     public static JPanel imm = new JPanel();
  9.  
  10.     public void init() {
  11.         setLayout(new BorderLayout());
  12.         add(imm, "Center");
  13.     }
  14.  
  15.     public void paintComponent(Graphics g)
  16.     {
  17.         //super.paintComponent(g);
  18.         //provato con tutti e due i modi... avevo letto che paintComponents()
  19.         //è utilizzato per disegnare gli oggetti...
  20.         super.paintComponents(g);
  21.         Image img = getImage(getDocumentBase(), "darkangel.jpg");
  22.         g.drawImage(img, 0, 0, imm);
  23.     }
  24. }



Comunque sul libro che ti dissi, non è trattata questa cosa... sapresti consigliarmi qualche buon libro per cominciare? :heehee::D


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 21:44
Lunedì, 18/01/2010
ti consiglio "Guida Completa Java" di shildt

oppure i due libri deitel&deitel, il primo volume Fondamenti di programmazione Java il seconod Tecniche Avanzate

c'è un topic apposito: http://www.pierotofy.it/pages/extras/forum/14/18650-libri_ ...

Ultima modifica effettuata da netarrow il 18/01/2010 alle 21:44



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 23:03
Lunedì, 18/01/2010
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

  1. g.drawLine(0,0,100,100);



E poi dichiaro l'oggetto, la linea la disegna. Mi chiedo quindi se ci sia qualche errore qui:
Codice sorgente - presumibilmente Plain Text

  1. g.drawImage(img, 0, 0, this);

:-|
Grazie mille :)


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 23:31
Lunedì, 18/01/2010
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

  1. import java.awt.*;
  2. import javax.swing.*;
  3.  
  4. class Pannello extends JPanel {
  5.         private Image img;
  6.        
  7.         public Pannello(Image img) {
  8.                 this.img = img;
  9.         }
  10.        
  11.         public void paintComponent(Graphics g)
  12.     {
  13.             super.paintComponent(g);
  14.                 g.drawImage(img, 0, 0, this);
  15.     }
  16. }
  17.  
  18. public class Prova extends JApplet {
  19.         private JButton b;
  20.         private Pannello p;
  21.        
  22.     public void init() {
  23.                 b = new JButton();
  24.                 p = new Pannello(getImage(getDocumentBase(), "a.jpg"));
  25.         }
  26.        
  27.         public void start() {
  28.                 b.setText("prova");
  29.                 p.add(b);
  30.                 getContentPane().setLayout(new BorderLayout());
  31.                 getContentPane().add(p, BorderLayout.CENTER);
  32.         }
  33. }



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



Mai memorizzare quello che puoi comodamente trovare in un libro.
Imparare è un'esperienza; tutto il resto è solo informazione.
L'immaginazione è più importante della conoscenza.
(A. Einstein)


Esistendo poi google...
PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 0:09
Martedì, 19/01/2010
Ehm... Non funziona 8-|
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

  1. public imgPanel(Image img) {
  2.         this.img = img;
  3.     }



Io:
Codice sorgente - presumibilmente Java

  1. public imgPanel() {
  2.         Toolkit tk = Toolkit.getDefaultToolkit();
  3.         img = tk.getImage("darkangel.jpg");
  4.     }



Hai per caso altre idee ?

Ultima modifica effettuata da crash outside control il 19/01/2010 alle 0:10


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo