getSource() e MouseClicked()

Ola pessoal,

estou tendo um problema com essas funcoes acima.

Eu fiz o seguinte:
ImageIcon carta0=new ImageIcon(“images/000.gif”);

utilizei o carta0.paintIcon() para colocar a imagem na tela.

gostaria que quando clicasse na figura, aparecesse uma mensagem na tela. Tentei da seguinte forma:

public void mouseClicked(MouseEvent e){
String s=“TESTE”;
if(e.getSource()==carta0){
s=“2 de OUROS”;
JOptionPane.showMessageDialog(null,s);
}
}

mas nao funciona. Nao entra no if. Alguem sabe me dizer o que acontece ou tem uma solucao melhor?

Obrigado,
Leonardo

Acho que o ImageIcon não ouve eventos. Você tem que colocá-lo em algum botão (ou outro componente) e adicionar um ouvinte a esse componente, de forma que os eventos do mouse possam ser tratados.

Mas eu estou querendo colocar varias cartas uma sobreposta a outra (igual o jogo de copas que vem no windows).

Como poderia fazer sem ser com o ImageIcon??

Valeu!
Leo

Você pode tentar desenhar todos em um JPanel só…quando você sobrescreve o método paintComponent, você pode desenhar o que quiser nele, e é o que vai aparecer na tela. Dessa forma, você poderia desenhar as cartas assim:

public void paintComponent(Graphics g) {
  super.paintComponent();

  for (int i=0 ; i<cartas.length ; i++) {
    g.drawImage(...); // desenha a carta i, deslocada à direita da anterior
  }
}

É lógico que o código acima está simplificado e eu não sei como são guardadas suas cartas, mas se vc brincar com os tutoriais da Sun e fuçar um pouquinho vc resolve :wink:

Ok!! MUITO OBRIGADO!!!