Iniciando a secao Swing (nao pense em outra coisa, esse blog e de Java!!), vou postar um codigo-exemplo de WindowListener, mais precisamente o evento Fechando a janela, com esse exemplo e possivel escolher qualquer comportamento ao fechar a jenela, so vai depender da sua criatividade:Quer impossibilitar o fechamento? A vontade!Quer enviar a janela para a bandeja do sistema? Voce pode! (este exemplo nao ensina a fazer isso, mas darei algumas dicas desta POG no final).Enfim, vamos ao que interessa, capturar o evento windowClosing, ou fechando a janela para os mais intimos.//Importacao das bibliotecas que iremos precisarimport java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JOptionPane;import java.awt.*; import javax.swing.*; public class JanelaTeste extends JFrame{ private static void criaJanelaExemploGUI() { //Cria uma nova janela, instanciando um JFrame, afinal para fechar //uma janela, primeiro precisamos da janela! JFrame frame = new JFrame(Janela Teste Brincando com o botao Fechar); //Seta o comportamento padrao para a acao Fechar da janela. //Neste caso, estamos informando Nao faca nada ao fechar frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //Esse bloco nao tem a menor necessidade, coloquei apenas para ter algo//adicional no codigo, neste caso a primeira linha dentro do TRY recolhe//todos os looks instalados na maquina, depois eu seleciona o terceira da lista.//lembrando que o array comeca em zero, entao 0, 1, 2... try { UIManager.LookAndFeelInfo[] instalados = UIManager.getInstalledLookAndFeels(); UIManager.setLookAndFeel(instalados[2].getClassName()); }catch(Exception e) { e.printStackTrace(); } //Seta uma dimensao para a janela, que sera assumida na inicializacao;//porporcao larguxa x altura frame.setSize(400,100); //Adiciona o WindowListener ao frame, este listener possibilita capturar todos os eventos //da janela, ex.: Fechando, Minimizando, Restaurando, Recebendo Foco, Perdendo Foco, etc. frame.addWindowListener(new WindowAdapter() { //aqui estou informando que quero o evento fechando a janela public void windowClosing (WindowEvent e) { //Nesta parte devemos colocar todo o que queremos que aconteca quando o botao //fechar for pressionado, neste caso apenas e exibida uma mensagem simples //e depois a aplicacao e encerrada. JOptionPane.showMessageDialog(null,A janela sera fechada., Voce clicou em fechar.,JOptionPane.PLAIN_MESSAGE); System.exit(0); } }); //Deixa o frame visivel aos olhos dos mortais. frame.setVisible(true); } public static void main(String[] args){ criaJanelaExemploGUI(); }} Alguns comentarios adicionais...No comando frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);, estou setando a operacao padrao de fechamento do frame, neste caso a opcao desejada foi uma constante da classe JFrame, a constante DO_NOTHING_ON_CLOSE, nao faca nada ao fechar, porem nao existe somente esta, outras constantes podem ser passadas como parametros:DISPOSE_ON_CLOSE: Induzir ao Fechar, fecha a janela.HIDE_ON_CLOSE: Esconder ao Fechar, se quiser ver a jenela novamente basta aplicar um setVisible(true).EXIT_ON_CLOSE: Sai ao fechar, sai do sistema.Dentro do listener (windowListener), estamos invocando o evento windowClosing, para fiscalizar quando a janela e fechada, existem varios outros eventos uteis que podem ser utilizados, como por exemplo:windowClosed: Invocado quando a janela e fechadawindowLostFocus: Invocado quando a janela perde o foco.windowIconified: Invocado quando a janela e minimizada.windowOpened: Invocado quando a janela e aberta.E outros mais, que podem ser consultados na API da classe WindowAdapter.Agora sobre enviar a janela para a bandeja do sistema (ao lado do reogio), que comentei no inicio do topico, bem isso nao existe nenhum programa (ao menos em java) faz isso, o que acontece e o seguinte: Em determinado momento, quando e decidido que o programa tem