Pergunta

Quero escrever um componente que monitora outras atividades, mas os ouvintes devem ser removidos quando a janela do componente estiver fechada.

Não quero escrever esse código de remoção muitas vezes, mas quero que o componente lida com ele próprio. (Como eu posso fazer isso?

Obrigado!

Foi útil?

Solução

o JFrame classe (que é a janela) tem um processWindowEvent retorno de chamada que leva um único parâmetro chamado Windowevent

Registrar este retorno de chamada e se o parâmetro for de WINDOW_CLOSED Você pode chamar o código de remoção dentro.

No final, o código de remoção é escrito apenas uma vez (como você deseja).

Veja o API para mais detalhes.

Atualizar: Veja também isto

Outras dicas

Eu escreveria algo assim

class ListenToWindow
extends WindowAdapter
{
MyInternalFrame frame;

public void windowClosed(event)
   {
   this.frame.removeAllTheRequiredListeners();
   }
}

(...)
JFrame window;
MyInternalFrame frame;
(...)
window.addWindowLister(new ListenToWindow(frame));
(...)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top