Retornando o Frame que contém o JPanel

Tenho uma série de JInternalFrames que exibem JPanels. Um pra cada um, ou seja, cada frame com uma imagem diferente.

Existe algum método que retorne o JInternalFrame que contém a imagem?

Por exemplo, coloquei um MouseListener no JPanel. Toda vez que o mouse entre na imagem, um JLabel escreve o título do JInternalFrame onde a imagem está sendo exibida (getTitle())… mas pra isso eu precisaria acessar o frame que a contém.

Abraços…

Será que algo do tipo

JInternalFrame internalFrame = (JInternalFrame)this.getParent();
//faça agora o que quiser com internalFrame

e ajuda?

Abraço!

Oi Adriano,

O ideal para esses casos é criar um método genérico que busca recursivamente o frame em que um determinado componente está inserido.
Algo do tipo:

public static JInternalFrame getFrame(Component componente) {
    if (componente == null) {
        throw new IllegalArgumentException("Frame não encontrado.");
    }

    if (componente instanceof JInternalFrame) {
        return (JInternalFrame) componente;
    }
    return getFrame(componente.getParent());
}

Colocando métodos como esse em classes separadas, você consegue montar uma infra-estrutura que ajudará no seu dia a dia.

Abraços,
Hugo.

Blz pessoal!! Funcionou perfeitamente…

Esse método eu já coloquei em uma classe só pra ele… perfeito… serve pra uma porrada de coisas que tem no aplicativo!

Abraços…