JInternalFrame fecha e não abre mais

4 respostas
lsf

Ola,

Tenho um Mdi com um menu que chama uma janela, até ai tudo bem.
Mas quando eu fecho a janela e a chamo novamente pelo menu nada acontece.
Eu gostaria de abrir e fechar, sem ter que usar a técnica de deixar invisível e visível.

Esse é o evento que chama a janela pelo menu:

E essa é minha janela problematica:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyVetoException;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;

 
 public class InternalFrameBancos extends JInternalFrame implements ActionListener
 {   
      public InternalFrameBancos(JDesktopPane desktop)
     {
          
        super("Bancos",false,true,false,false);
             
        setDefaultCloseOperation(DISPOSE_ON_CLOSE);
        
        desktop.add(this);

        setSize(800,600);
     
     }
      
     public void actionPerformed(ActionEvent event)
    {
         setVisible(true);
     }
 }

Espero que alguem possa me ajudar, Obrigado!

4 Respostas

deadlock
<blockquote><div class="quote-author">lsf:</div>

public class InternalFrameBancos extends JInternalFrame implements ActionListener

{

public InternalFrameBancos(JDesktopPane desktop)

{
super("Bancos",false,true,false,false);
         
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    
    desktop.add(this);

    setSize(800,600);
 
 }

Espero que alguem possa me ajudar, Obrigado!

troca o DISPOSE_ON_CLOSE por HIDE_ON_CLOSE

lsf

Valeu cara funcionou, mas eu gostaria de entender melhor pq.
Antes de postar aqui eu pesquisei e achei soluções(que pra mim não funcionaram) como:

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

ou controlando o fechamento com dispose()

setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

    
     this.addInternalFrameListener(  
         new InternalFrameAdapter(){  
             public void internalFrameClosing(InternalFrameEvent e) {  
                int result = JOptionPane.showConfirmDialog(null,"Deseja sair?","Sair",JOptionPane.YES_NO_OPTION);  
                  
                if (result == JOptionPane.YES_OPTION) {             
                   InternalFrameBancos.this.setVisible(false);  
                   InternalFrameBancos.this.dispose();             
                }       
             }  
         }  
     );

Não quero só fazer funcionar, quero entender oque esta acontecendo tb.
Muito obrigado pela ajuda

mmenezes

cara da uma estudada em swing

lsf

Cara, bem que eu to tentando usar o javadoc. Mas sabe como é, inglês de neandertal não ajuda.
Vc conhece alguma fonte em pt_BR :smiley: .

Valeu!

Criado 24 de agosto de 2007
Ultima resposta 26 de ago. de 2007
Respostas 4
Participantes 3