Oppure

Loading
17/01/10 19:47
crash outside control
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:
    public void paint(Graphics g) {
        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 17/01/10 19:48
aaa
17/01/10 23:01
netarrow
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.
aaa
18/01/10 0:34
crash outside control
Cosa intendi con:
Postato originariamente da netarrow:

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


Così ?

public void paintComponent(Graphics g)
    {
        
        super.init();
        Image img = getImage(getDocumentBase(), "darkangel.jpg");
        g.drawImage(img, 0, 0, imm);

    }

Non credo proprio perchè non ha nè senso, nè funziona... 8-|
aaa
18/01/10 11:30
netarrow
Non ha senso? Ma hai studiato un minimo le basi del linguaggio prima di venire a postare?

Cmq così:

public void paintComponent(Graphics g) 
    { 
        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.
aaa
18/01/10 15:43
crash outside control
Credevo non avesse senso richiamare il metodo init()...
Comunque non funziona...
Ecco il codice:

package javaapplication8;

import java.awt.*;
import javax.swing.*;

public class prova extends JApplet {

    public static JPanel imm = new JPanel();

    public void init() {
        setLayout(new BorderLayout());
        add(imm, "Center");
    }

    public void paintComponent(Graphics g)
    {
        //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? :heehee::D
aaa
18/01/10 20:44
netarrow
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: pierotofy.it/pages/extras/forum/14/18650-libri_sul_java_definitive_post/
Ultima modifica effettuata da netarrow 18/01/10 20:44
aaa
18/01/10 22:03
crash outside control
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:

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


E poi dichiaro l'oggetto, la linea la disegna. Mi chiedo quindi se ci sia qualche errore qui:
g.drawImage(img, 0, 0, this);
:-|
Grazie mille :)
aaa
18/01/10 22:31
netarrow
Ti posto un esempio, mette come sfondo l'immagine a aggiunge in alto un bottone, se era questo quello che volevi:

import java.awt.*; 
import javax.swing.*; 

class Pannello extends JPanel {
	private Image img;
	
	public Pannello(Image img) {
		this.img = img;
	}
	
	public void paintComponent(Graphics g) 
    { 
	    super.paintComponent(g);
		g.drawImage(img, 0, 0, this);
    } 
}

public class Prova extends JApplet { 
	private JButton b;
	private Pannello p;
	
    public void init() { 
		b = new JButton();
		p = new Pannello(getImage(getDocumentBase(), "a.jpg"));
	} 
	
	public void start() {
		b.setText("prova");
		p.add(b);
		getContentPane().setLayout(new BorderLayout());
		getContentPane().add(p, BorderLayout.CENTER);
	}
} 


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 18/01/10 22:31
aaa