Diferença drástica de desempenho

1 resposta
alex

Escrevi um código utilizando dois recursos diferentes para que imagens apareçam em uma janela. Em um primeiro momento, carreguei uma JLabel utilizando como construtor JLabel(ImageIcon), para exibir a imagem "back". Em seguida utilizei para mostrar outra imagem, "over" o método toolkit().getImage(), que sobrepoe a primeira.
A primeira é "pintada" instantaneamente, já a segunda, bem menor, leva segundos para aparecer. Percebi que quando utilizo o método drawImage(Image, coordX, coordY, ImageObserver), a performance cai bastante. Este método é lento mesmo ? Outros métodos draw ... (drawRect, drawOval) tem performances bem satisfatórias. :?

package ambiente.janela;

import javax.swing.JFrame;
import javax.swing.*;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.event.*;

public class Principal extends JFrame
{
  public Principal()
  {
      String str_backPicture = new String(path + "back.jpg");
      String str_picture = new String(path + "over.jpg");
      ImageIcon backPicture = new ImageIcon(str_backPicture);
      Image picture = getToolkit().getImage(str_picture); 
      setSize(800,600);
		
      Container painelPrincipal = getContentPane();
      painelPrincipal.setLayout(new BorderLayout());
      Painel labelPic = new Painel(backPicture, picture);
      Box box = Box.createHorizontalBox();
      box.add(new JScrollPane(labelPic));
      painelPrincipal.add(box);
      show();		
   }
}

   public static void main(String args[])
   {
      new Principal();
   }

}
package ambiente.janela;

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


public class Painel extends JLabel
{
	private Image picture;
	
	public Painel(ImageIcon imagem, Image figura)
	{
		super(imagem);
		picture = figura;
	}

	public void paint(Graphics g)
	{
		super.paint(g);
		g.drawImage(picture, 0, 0, this.getParent());
	}
}

1 Resposta

alex

MediaTracker … eis a solução !!! Graças a uma outra discussão que eu não havia consultado: 05/05/2003 - " É possível colocar uma imagem como background" - THEKENNY e DANGO, foi possível carregar inúmeras imagens sem perda de desempenho. :smiley:

Criado 17 de julho de 2003
Ultima resposta 18 de jul. de 2003
Respostas 1
Participantes 1