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. :?
[code]
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();
}
}[/code]
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());
}
}