Animação Alternar Imagens JAVA

4 respostas
Rodrigo_Barros

Boa noite galera!

Estou tentando realizar um método de alteração de imagens já pré-definidas nas quais elas ficam mudando na tela, mas quero fazer em desktop e não em Java Web.
Em tela Web eu já sei e tem muitos exemplos na net, mas para desktop não tem o que eu preciso.
Só quero que as imagens mudem através de um vetor, só isso, sem upload! O mais simples possível!
Já tentei o “ImageIO”, mas não funciona!

Esse código abaixo está dando erro, dizendo que não pode abrir a imagem, a mesma se encontra no mesmo pacote do código, por isso era para estar abrindo.

Estou programando no Netbeans.

Se pelo menos eu consegui achar o erro nesse código, poderei colocar um array nele e realizar o que eu preciso.

public class AnimaJava extends JPanel{

    
    public static void main(String args[]) {
        //Configuração do Frame
        JFrame F = new JFrame();
        F.add(new AnimaJava());
        F.setSize(600, 600);
        F.setVisible(true);
        F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    @Override
    public void paintComponent(Graphics g){
        AffineTransform transf = AffineTransform.getTranslateInstance(100, 100);
        transf.rotate(Math.toRadians(45));
        BufferedImage Boca = LoadImage("maca.png");
    
        Graphics2D g2d = (Graphics2D) g;
        
        g2d.drawImage(Boca, transf, null);
        
    }
    
    BufferedImage LoadImage(String FileName){
        BufferedImage img = null;
        
        try {
            img = ImageIO.read(new File(FileName));
                    
        } catch (IOException erro) {
            JOptionPane.showMessageDialog(null, "Erro na imagem " + erro);
        }
        
            return img;
    }
    
    
}

4 Respostas

K

Tenta com getResource:

img = ImageIO.read(AnimaJava.class.getResource("maca.png"))
raghyjose

funcionou?

D

Mexi um pouquinho no seu código e está funcionando aqui, coloque a imagem no Disco “C:” para o caminho dela funcionar:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class AnimaJava extends JPanel{

	BufferedImage boca = loadImage("C:/marca.png");
    
    public static void main(String args[]) {
        //Configuração do Frame
        JFrame F = new JFrame();
        F.add(new AnimaJava());
        F.setSize(600, 600);
        F.setVisible(true);
        F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    @Override
    public void paintComponent(Graphics g){
        AffineTransform transf = AffineTransform.getTranslateInstance(100, 100);
        transf.rotate(Math.toRadians(45));
    
        Graphics2D g2d = (Graphics2D) g;
        
        g2d.drawImage(boca, transf, null);
        
    }
    
    BufferedImage loadImage(String FileName){
        BufferedImage img = null;
        
        try {
            img = ImageIO.read(new File(FileName));
                    
        } catch (IOException erro) {
            JOptionPane.showMessageDialog(null, "Erro na imagem " + erro);
        }
        
            return img;
    }
    
    
}

Obs.: faça nomes de métodos e de variáveis começando com letra minúscula, essa é a convenção e deve ser seguida para evitar confusão (a primeiro momento achei que “LoadImage(…)” estava instanciando uma Classe).

Rodrigo_Barros

Funcionou amigo! Muito obrigado!
Só irei usar o getResource agora!
Abraço!

Criado 7 de abril de 2017
Ultima resposta 9 de abr. de 2017
Respostas 4
Participantes 4