Como posso fazer com que o jDialog abra após o jFrame já estar sendo exibido?

8 respostas
F

Olá, como tenho pouco conhecimento em JAVA, ainda tenho algumas duvidas simples, e acredito que vocês possam me esclarecer, pois de tao basica que a mesma é, nao encontro solução.

é o seguinte, eu estou desenvolvendo um aplicativo desktop em JAVA, utilizando o NetBeans 6.9, e logo ao abrir a tela principal, gostaria de exibir um jDialog solicitando dados, porém gostaria que a tela principal ja estivesse sendo exibida por tras… ai esta o meu problema, se eu colocar no construtor da classe a chamada para exibição do dialog ele acaba sendo carregado antes e como eh modal, interrompe a execução do frame principal. Gostaria de uma ajuda para isso…

Não sei se ficou muito claro a minha duvida.
Desde de já, Obrigado.

8 Respostas

T

Coloque seu código, para que possa ajudá-lo, se estver usando o GUI do netbeans, vc pode colocar abaixo abaixo de :

...


public void run();

new ....;

seu código vem aqui!!

F

Bom, Thiago.

Vou colar um exemplo de como eu estou chamando.

//exemplo...
public class Principal extends javax.swing.JFrame {
//construtor
    public Principal(){
         new welcome(this, true).setVisible(true);
         //onde welcome eh um jDialog... 
    }

....

}

fazendo assim, o dialog abre antes que o frame principal seja exibido, eu gostaria que ele fosse exibido e em sequencia o dialog...

quanto ao run... em ambos estou chamando com "new x().setVisible(true);" ... onde x eh o nome da classe.

No aguardo. Obrigado.

T

:-o

public class Principal extends javax.swing.JFrame {  
 //construtor  
    public Principal(){  

  JDialog dialog = new JDialog();  

        new welcome(this, true).setVisible(true);  


      dialog.getContentPane().add(new JLabel("<html>feche esse dialogo<br>" +  
            "para continuar</html>")) // seu JDialog vem aqui
        
    }  
 
....  
  
 }
T

como vc está fazendo seu form?

com o editor do netbeans?

T

Você quer que quando acessar sua classe apareça uma menssagem?

Se for isso, eu já usei messegedialog

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class MessageDialog {

  public static void main(String argv[]) {


    String message = "Olá\n"
        + "Sejá bem vindo!.";// sua mensagem

    JOptionPane pane = new JOptionPane(message);
    JDialog dialog = pane.createDialog(new JFrame(), "Mensagem");
    dialog.show();
  }
}

coloque sua mensagem abaixo da sua classe

F

Bom, o primeiro problema resolvi, acabei criando uma outra classe "main" só para chamar as telas, e la coloquei na ordem q me convém... funcionou...

agora tenho um outro problema, quando abro o jDialog, ele bloquea ambas delas q estao aberta...
como isolar para que apenas uma fique bloqueada?

segue o codigo:

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        /* Abre tela principal */
        new Principal().setVisible(true);
        
        Principal principal = new Principal();
// QuickConfig eh um jDialog
        new QuickConfig(principal, true).setVisible(true);

        /* abre atela de boas-vindas (Welcome eh um JFrame)*/
        new Welcome().setVisible(true);
     
    }

}

portando eu abro dois JFrame e um jDialog.. e o dialog bloqueia meus dois frames, mesmo o parent ser o principal.

solução?

F

THIAGOANALISTA:
Você quer que quando acessar sua classe apareça uma menssagem?

Se for isso, eu já usei messegedialog

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class MessageDialog {

  public static void main(String argv[]) {


    String message = "Olá\n"
        + "Sejá bem vindo!.";// sua mensagem

    JOptionPane pane = new JOptionPane(message);
    JDialog dialog = pane.createDialog(new JFrame(), "Mensagem");
    dialog.show();
  }
}

coloque sua mensagem abaixo da sua classe

Perfeitamente, isso que acabei fazendo, e funcionou.

porém o problema com o bloqueio dos frames que eu citei, continua.

T

bem, o que pude perceber, acho que vc estanciou o frame duas vezes,
olha aqui vamos corrigir:

JOptionPane pane = new JOptionPane(message);  
   JDialog dialog = pane.createDialog(new JFrame(), "Mensagem");  // new frame, cria outro frame, tente desabilitar um dos frames, no modelo que passei ele cria o frame da classe, como vc está usando setVisible(true), aparecerá dois mesmo.


    dialog.show();  
   }  
 }
Criado 5 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 8
Participantes 2