Repaint image java

ola pessoal

eu estou com um problema no meu codigo, nao estou conseguindo lançar uma nova imagem. O botão esta a repintar mas nao esta sendo lançado nada

ActionListener one = new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                panel2.revalidate();
                panel2.repaint();
            }
        };

        btn1.addActionListener(one);



        JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());

        panel2.add(lab1);
        panel2.add(test1);
        panel2.add(pn5);
        panel2.add(pn1);
        panel2.add(btn1);


alguêm pode ajudar? thanks :slight_smile:

Cara só o repaint era pra funcionar.

ola obrigado pela resposta, o problema é que o repaint esta funcionando, le não esta é pedindo uma nova carta, ou seja o repaint acaba por nao fazer nada

é isto aqui que pede uma nova carta

myDeckOfCards.giveCardPlayer1().getImage()

não esta faltando o caminho do aquivo de imagem, tipo getImate(c:\xxx)

nao cara, porque vem daqui e eu tenho os caminhos pra todas as imagens num vector

[code]public void setImage(ImageIcon Image) {
this.cardImage = Image;
}

public ImageIcon getImage() {
	return deckOfCards[actualCard++].getImage();
}[/code]

o problema mesmo é pedir uma nova carta e substituila pela inicial que é mostrada. Tipo carregar no botão e mostra uma nova

E porque deveria? Seu actionListener deveria pedir para lançar uma nova carta, não para repintar a tela:

ActionListener one = new ActionListener() { public void actionPerformed(ActionEvent e) { test1.setIcon(myDeckOfCards.giveCardPlayer1().getImage()); } });

[quote=ViniGodoy]E porque deveria? Seu actionListener deveria pedir para lançar uma nova carta, não para repintar a tela:

ActionListener one = new ActionListener() { public void actionPerformed(ActionEvent e) { test1.setIcon(myDeckOfCards.giveCardPlayer1().getImage()); } });[/quote]

ola, muito obrigado pela ajuda ViniGodov

acontece o seguinte, que é eu nao conseguir acede ao test1 e o myDeckOfCards pedir para ser final

fica o output

test1 cannot be resolved
Cannot refer to a non-final variable myDeckOfCards inside an inner class defined in a different method
test1 cannot be resolved to a variable

[code]ActionListener one = new ActionListener() {
public void actionPerformed(ActionEvent e) {
test1.setIcon(myDeckOfCards.giveCardPlayer1().getImage());
}
};

	panel2.add(lab1);
	panel2.add(test1);  
	panel2.add(pn5);
	panel2.add(pn1);
	panel2.add(btn1);[/code]

EDIT:

final JLabel test1 = new JLabel(myDeckOfCards.giveCardPlayer1().getImage());

ActionListener one = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        test1.setIcon(anotherIcon);
    }
};

funcionou, obrigado