Inserir imagem em biblioteca Graphics

Hey, estou com um problema…

Estou fazendo uma aplicação para a faculdade sobre um Simulador de vôo. é coisa simples. Estou usando a biblioteca Graphic para fazer todo o desenho e tals. Preciso inserir uma imagem nela agora, não conheço quase nada de java, fio chutano as oisas e vai saindo, se alguem puder ajudar… tende ser um pouco claro, vlw^^

Dados:
essa eh a funcao da imagem
– public abstract boolean drawImage( Image, width, height, x, y, white bgcolor, ImageObserver) –

esse eh o codigo de geracao do meu ambiente ondi ficara o aviao


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

public class painelAviao extends JFrame{

private int AlcanceVisao = 30;

public painelAviao() {
	System.out.println("criado painel");
}

public void paint(Graphics g) {

	int[] xPista = {getXA(), getXB(), getXD(), getXH()};
	int[] yPista = {getYA(), getYB(), getYD(), getYH()};
	
	Polygon pista = new Polygon(xPista, yPista, 4);
	g.drawPolygon(pista);
	g.setColor(Color.gray);
	g.fillPolygon(pista);

	int[] xGrama = {getXF(), getXA(), getXH(), getXE()};
	int[] yGrama = {getYF(), getYA(), getYH(), getYE()};
	Polygon Grama = new Polygon(xGrama,yGrama,4);
	g.drawPolygon(Grama);
	g.setColor(Color.green);
	g.fillPolygon(Grama);

	int [] xCeu = {getXB(), 0, getXC(), getXD()};
	int [] yCeu = {getYB(), 0, 0, getYD()};
	Polygon Ceu = new Polygon(xCeu,yCeu,4);
	g.drawPolygon(Ceu);
	g.setColor(Color.blue);
	g.fillPolygon(Ceu);


	g.setColor(Color.red);
	g.drawString("a",getXA(),getYA());
	g.drawString("b",getXB(),getYB());
	g.drawString("c",getXC(),getYC());
	g.drawString("d",getXD()-10,getYD());
	g.drawString("e",getXE()-10,getYE());
	g.drawString("f",getXF(),getYF());
	g.drawString("h",getXH()-10,getYH());

}

:?: :?: :?:

E qual é o problema?

Algumas dicas:

  1. A interface ImageObserver só é realmente útil se vc estiver carregando imagens muito grandes, ou figuras da internet. Caso contrário, pode passar null para esse parâmetro;
  2. Para carregar imagens, use a classe ImageIO;
  3. IMPORTANTE: Não altere o estado do objeto Graphics recebido por parâmetro. Pode ter consequências drásticas. Altere o seu método paint para:

public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g.create(); //Criamos uma cópia do graphics original //Aqui vai o seu método paint normal, usando g2d ao invés de g. g2d.dispose(); //Liberamos os recursos usados pela cópia }

Essa dica já tem a vantagem de usar a classe Graphics2D, que é mais avançada e possui funções a mais.

  1. Dê uma olhada nesses locais:
    http://java.sun.com/docs/books/tutorial/2d/TOC.html
    http://fivedots.coe.psu.ac.th/~ad/jg/

  2. Você está sobrescrevendo paint. Isso está ok para o JFrame, mas se fosse qualquer outro componente do Swing (JPanel, por exemplo) você teria que sobrescrever paintComponent.

Acho que é só. :slight_smile: