Galera, estou com um problema no meu codigo.
Consigo de trocar imagem apenas uma vez.
Quando vou adicionar a terceira imagem o programa nem abre.
Dá exception.
Erro:Exception in thread “main” java.lang.OutOfMemoryError: Java heap space
at java.awt.image.DataBufferByte.(Unknown Source)
at java.awt.image.ComponentSampleModel.createDataBuffer(Unknown Source)
at java.awt.image.Raster.createWritableRaster(Unknown Source)
at javax.imageio.ImageTypeSpecifier.createBufferedImage(Unknown Source)
at javax.imageio.ImageReader.getDestination(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at javax.imageio.ImageIO.read(Unknown Source)
at EscalonandoImagem.imagemEscalonada(EscalonandoImagem.java:79)
at EscalonandoImagem.(EscalonandoImagem.java:37)
at ImageIcon.main(ImageIcon.java:8)
Codigo
[code]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class EscalonandoImagem extends JFrame{
private JButton btn;
private JLabel lblImg;
private ImageIcon imgIcon [] = new ImageIcon[200];
private int x = 0;
public EscalonandoImagem() {
super("teste de escalonamento de imagem");
setLayout(null);
setSize(300, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
imgIcon[0] = imagemEscalonada(“img/ECONOMIA001.jpg”, 50, 50);
imgIcon[1] = imagemEscalonada(“img/ECONOMIA002.jpg”, 50, 50);
imgIcon[2] = imagemEscalonada(“img/ECONOMIA003.jpg”, 50, 50);
btn = new JButton(“trocar”);
btn.setBounds(1, 1, 80, 40);
add(btn);
lblImg = new JLabel(imgIcon[0]);
lblImg.setBounds(10, 100, imgIcon[0].getIconWidth(), imgIcon[0].getIconHeight());
add(lblImg);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
lblImg.setIcon(imgIcon[x+1]);
x++;
repaint();
System.out.println(lblImg.getIcon());
}
});
}
public ImageIcon imagemEscalonada(String url, int altura, int largura) {
BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(new File(url));
} catch (IOException e) {
System.out.println(“Erro ao abrir a imagem…”);
e.fillInStackTrace();
}
return new ImageIcon(bufferedImage.getScaledInstance(altura, largura,
1000));
}
[/code]
main
[code]import javax.swing.JFrame;
public class ImageIcon {
public static void main(String[] args) {
EscalonandoImagem escalonando = new EscalonandoImagem();
escalonando.setVisible(true);
escalonando.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
}[/code]
Com duas imagens meu código funciona normal.
Mas com 3 imagens nem abre o programa.
Alguém sabe por que?
Obrigado