Bom dia pessoal. Estou tendo o seguinte problema:
Tenho um JFrame que chama um JDialog modal. Até ai tudo bem. Porém depois de trocar de aplicativo (com alt+tab por exemplo), se eu voltar ao programa só aparecerá o JDialog, ficando o JFrame “escondido”. Alguém sabe alguma maneira de contornar esse problema?
         
         
           
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            zongman  
            
           
           
          
              
                Agosto 11, 2008, 10:48am
               
               
          #2 
           
         
        
          Blz, 
passa o JFrame como parent do JDialog.
Falou…
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          [quote=zongman]Blz, 
passa o JFrame como parent do JDialog.
Falou…[/quote]
Valeu pela ajuda, só acho que não dá pra eu fazer isso porque no caso eu tenho uma classe que herda a JDialog.
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            brlima  
            
           
           
          
              
                Agosto 11, 2008,  3:02pm
               
               
          #4 
           
         
        
          cria um construtor que recebe o frame e chama super(Frame) do JDialog que tá implementando!
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          
Obrigado pela ajuda, mas não deu certo. Acho que faltaram detalhes na minha explicação:
Tenho um JFrame que é a tela principal. Dentro dela tenho um JPanel. Esse JPanel chama o JDialog, que é modal. Se eu dou um alt+tab e troco de aplicação, o JFrame(junto com o JPanel e tudo mais que estiver nele) some e só volta a aparecer se eu fechar o JDialog. Eu já procurei bastante mas ainda não achei a resposta. Mas agradeço a boa vontade dos que me ajudaram até aqui.
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            brlima  
            
           
           
          
              
                Agosto 11, 2008,  3:45pm
               
               
          #6 
           
         
        
          Entedi mais ainda a duvida… E é isso msm que tão respondendo no topico… rs
O que falta é o teu DIalog saber que o Owner dele é o Frame que voce esta chamando ele…
Na class JDialog que vc extende, faz algo do tipo MinhaDialog extends JDialog, certo?
É so criar um construtor:
public MinhaDialog(Frame fr){
   super(fr);
} 
Ou então vc nao explicou e piorou a sua explicação, pq eu to entendo isso. 
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          [quote=brlima]Entedi mais ainda a duvida… E é isso msm que tão respondendo no topico… rs
O que falta é o teu DIalog saber que o Owner dele é o Frame que voce esta chamando ele…
Na class JDialog que vc extende, faz algo do tipo MinhaDialog extends JDialog, certo?
É so criar um construtor:
public MinhaDialog(Frame fr){
   super(fr);
} 
Ou então vc nao explicou e piorou a sua explicação, pq eu to entendo isso. :D[/quote]
Bom, entendi o que você disse e acho que está tudo certo, só não sei como passar para o JDialog o Frame. Abaixo o código:
[code] 
public class TelaPrincipal extends JFrame {
    private JDesktopPane desktopPane = null;
private JMenuBar jJMenuBar = null;
private JMenu jMenu = null;
private JMenuItem jMenuItem = null;
private JPanel jContentPane = null;
public TelaPrincipal() {
	super();
	desktopPane = new JDesktopPane();
	desktopPane.setFocusTraversalKeysEnabled(false);
	initialize();
	
}
private void initialize() {
	this.add(desktopPane);
	this.setJMenuBar(getJJMenuBar());
	this.setContentPane(desktopPane);
	this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
	this.getContentPane().add(getJContentPane());
	this.setTitle("Teste v0.1");
	this.setBounds(new java.awt.Rectangle(0,0,796,713));
	MetalLookAndFeel.setCurrentTheme(new OceanTheme());
	this.setFocusableWindowState(true);
}
private JPanel getJContentPane() {
	if (jContentPane == null) {
		GridLayout gridLayout = new GridLayout();
		gridLayout.setRows(1);
		jContentPane = new JPanel();
		jContentPane.setLayout(gridLayout);
	}
	return jContentPane;
}
private JMenuBar getJJMenuBar() {
	if (jJMenuBar == null) {
		jJMenuBar = new JMenuBar();
		jJMenuBar.add(getJMenu());
	}
	return jJMenuBar;
}
private JMenu getJMenu() {
	if (jMenu == null) {
		jMenu = new JMenu();
		jMenu.setText("Arquivo");
		jMenu.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 12));
		jMenu.add(getJMenuItem());
	}
	return jMenu;
}
private JMenuItem getJMenuItem() {
	if (jMenuItem == null) {
		jMenuItem = new JMenuItem();
		jMenuItem.setText("Abrir");
		jMenuItem.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 12));
		jMenuItem.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				jContentPane.add(new MeuJDialog(super(Frame)));
			}
		});
	}
	return jMenuItem;
}
public static void main(String[] args) {
	TelaPrincipal tela = new TelaPrincipal();
	tela.setVisible(true);
}
 
}[/code]
O erro aparece na linha abaixo.
 
Ali no Frame já tentei this e TelaPrincipal(nome da classe), mas não deu certo. Não repara muito no código que eu vou começar a ver Swing esse semestre e to fazendo isso de metido mesmo    
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          Bom pessoal, o código funcionou. Obrigado a todos que ajudaram. Só mais uma coisa. Existe um jeito de passar o JFrame para o JDialog sem ser pelo construtor?
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            brlima  
            
           
           
          
              
                Agosto 12, 2008,  1:12pm
               
               
          #9 
           
         
        
          jContentPane.add(new MeuJDialog(super(Frame)));   
Que que é isso aqui??? 
Isso aí não vai mostrar nunca uma JDIalog… rsrs
O correto seria
MeuJDialog d = new MeuJDialog(this);
d.setModal(true);
d.setVisible(true); 
Não precisa adicionar nada de janela no ContentPane do frame… =/
E sobre passar pelo construtor, sim, somente pelo contrutor, pois o construtor da JDIalog pede o Owner logo no inicio…
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          [quote=brlima]
jContentPane.add(new MeuJDialog(super(Frame)));  
 
Que que é isso aqui??? 
Isso aí não vai mostrar nunca uma JDIalog… rsrs
O correto seria
MeuJDialog d = new MeuJDialog(this);
d.setModal(true);
d.setVisible(true); 
Não precisa adicionar nada de janela no ContentPane do frame… =/
E sobre passar pelo construtor, sim, somente pelo contrutor, pois o construtor da JDIalog pede o Owner logo no inicio…[/quote]
O jeito é fazer no construtor então hehe. Obrigado pela ajuda. Foi realmente muito útil.