Esconder JFrame sem matar o processo?

Boa tarde a todos!

Gostaria de saber como faço para esconder um JFrame sem matar o processo, pois toda vez que utilizo o setVisible() ou o show() / hide() ele mata o processo (JTable carregada)…

Alguém tem uma idéia?

Hum…o setVisible(false) não devia terminar o processo, digo eu.

De qualquer forma podes tentar assim:

janela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Espero ter sido útil :wink:

Pois é, estou justamente fazendo isso, é que estou colocando o setVisible(false) no evento de minimizar, pois estou usando o System Tray, dai quando clico no PopupMenu para mostrar (setVisible(true), o processo volta do inicio.

=/

Posta aí o teu código, assim é melhor para ajudar.

Bem, vou postar as partes relevantes:
*Quando eu clico no trayIcon sem minimizar a janela, ele abre uma nova igual…

Main.java:

[code]
public static void main(String[] args) throws AWTException {

    SplashScreen.Splash splash = new SplashScreen.Splash(5000);
    splash.iniciarSplash();
    new JanelaPrincipal().setVisible(true);
    new Bandeja().carregarBandeja();
    
}[/code]

JanelaPrincipal.java:

[code]public JanelaPrincipal() {

    initComponents();
    setLocationRelativeTo(null);
    setExtendedState(MAXIMIZED_BOTH);
    
    Image imageIcon = new ImageIcon(getClass().getResource("/Imagens/icone.gif")).getImage();
    setIconImage((Image) imageIcon);
    
    ConnectionFactory.getConnection();
	
    GregorianCalendar calendar = new GregorianCalendar();
    SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' '");
    jLabelData.setText(formatador.format(calendar.getTime()));
    
    FormatarTabelas.alinhar(); 
    AtualizarDados.detalhes();

}

private void formWindowIconified(java.awt.event.WindowEvent evt) {

setVisible(false);

} [/code]

Bandeja.java:

[code]trayIcon.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {

            if (e.getClickCount() == 2 && e.getButton()==MouseEvent.BUTTON1) {

                JanelaPrincipal janela = new JanelaPrincipal();
                janela.setVisible(true);

            }
                         
        }  
    });[/code]

OK, acontece isto porque tu mandas criar uma nova janela de cada vez que se clica no tray:

//bandeja.java
JanelaPrincipal janela = new JanelaPrincipal();  

Posto isto, ao clicares no ícone da tray não estás a exercer qualquer acção na janela principal.

Sugestão: Atribui um nome á instância de JanelaPrincipal que crias no método main


JanelaPrincipal janela = new JanelaPrincipal().setVisible(true); //Em vez de  new JanelaPrincipal().setVisible(true);  

Agora já podes manipular(mais facilmente) a janela pretendida.

Sugestão nº2: Direcciona o evento do tray para a janela principal corrente.

 trayIcon.addMouseListener(new MouseAdapter() {    
             public void mouseClicked(MouseEvent e) {   
                   
                 if (e.getClickCount() == 2 && e.getButton()==MouseEvent.BUTTON1) {  
   
                     janela.setVisible(false);   
   
                 }  
                                
             }    
         });  

Tenta desta forma.

Perfeito! Isso mesmo!

Primeiro eu coloquei no main para iniciar apenas a Bandeja, depois pela bandeja eu iniciava a JanelaPrincipal e coloquei como você falou, dai funcionou perfeitamente!

vlw pela ajuda!!!

:smiley: