Notificar um Frame que ocorreu um clique em um Painel

Oi pessoal.
Tenho um JFrame e dentro dele, um JPanel que tem uma imagem. Quando ocorrer o clique em determinado ponto da imagem, quero fazer com que um JLabel no JFrame seja modificado. Como posso fazer isso, sabendo que o JPanel não tem relação com o JLabel?

Eu pensei em usar Observer, mas deve existir um outro jeito.

Abraço.

[quote=Andre Brito]Oi pessoal.
Tenho um JFrame e dentro dele, um JPanel que tem uma imagem. Quando ocorrer o clique em determinado ponto da imagem, quero fazer com que um JLabel no JFrame seja modificado. Como posso fazer isso, sabendo que o JPanel não tem relação com o JLabel?

Eu pensei em usar Observer, mas deve existir um outro jeito.

Abraço.[/quote]

Crie um método static na classe do label fazendo a alteração que vc quer e chame-a através do actionListneer no JPanel do click. Já que vc não quer utilizar Observer mesmo.

Um grande Abraço!!!

Não tinha pensado em fazer isso. Obrigado :slight_smile:

Agora, é aconselhável fazer isso? O problema de usar Observer é que vai deixar muito complexa a implementação.

[quote=Andre Brito]Não tinha pensado em fazer isso. Obrigado :slight_smile:

Agora, é aconselhável fazer isso? O problema de usar Observer é que vai deixar muito complexa a implementação.[/quote]

Não é que não seja aconselhável. Cada um tem sua forma de implementação, na verdade essa é até mais simples e poupa recursos da máquina. O problema é que precisa ser bem escrito pois, você vai estar mexendo com métodos estáticos e por consequência os atributos contidos dentro desses métodos terão de ser estáticos também. O legal é você criar uma classe só para esses label’s, isto é, uma para cada um e uma interface para padrozizar os métodos estáticos que vai usar neles. Porém só nos especiais que você pretende fazer essas jogadas.

Um Grande Abraço!!

Entendi. E devo dizer que estava pensando em fazer uma classe para o JLabel mesmo.

Valeu! Muito obrigado mesmo!
Abraço!

[quote=Andre Brito]Entendi. E devo dizer que estava pensando em fazer uma classe para o JLabel mesmo.

Valeu! Muito obrigado mesmo!
Abraço![/quote]

Por nada Grande André.

Me esqueci de uma coisinha … Você não pode usar métodos estáticos em interfaces pois os mesmos já são abstratos por natureza nela, então melhor só a classe mesmo…

Fora isso:

Não se esqueça do repaint() que talvez seja necessário para mostrar as alterações no frame em que se encontra o Label.

Tome cuidado com o garbage pois se você não esta referenciando pois é estático terá de adiciona-lo mediante sua criação.

De resto é só alegria… :smiley:

Um Grande Abraço!!!