Gente, bom dia!
Tenho uma janela principal que chama um jdialog e TEM QUE ESPERAR esse dado!
alguém pode me dar uma dica sobre como parar a execução do código da principal até q esse dado do dialog chegue?
aguardando e grato!
Gente, bom dia!
Tenho uma janela principal que chama um jdialog e TEM QUE ESPERAR esse dado!
alguém pode me dar uma dica sobre como parar a execução do código da principal até q esse dado do dialog chegue?
aguardando e grato!
consegui resolver assim: (pra quem estiver passando pelo mesmo sufoco que eu passei…, compartilhar nunca é demais!)
a classe JOPtionpane bloqueia a aplicação até que o dado seja recebido…
fiz com que meu jDialog recebesse o meu JOptionPane contendo o jPanel geral (que contem tudo que eu quero adicionado a ele)!
JOptionPane pane = new JOptionPane(panelGeral);
dialog = pane.createDialog(null, "Informe os dados solicitados:");
yessssssssssssssssssss!

Todo JDialog tem a propriedade setModal. Se definir para true, o usuário não poderá sair do seu JDialog e navegar para outra janela até que fecha a janela. Outra característica é que, graças a isso, o método setVisible do JDialog também trava e espera até que a janela seja fechada, igual o JOptionPane faz. 
Resolvi comentar aqui pois nem sempre o JOptionPane é suficiente para as necessidades de uma aplicação de verdade.
ViniGodoy,
perfeito cara… agora eu tinha testado este setModal, só que o jdialog tinha uma tabela com botões de consultar. Resultado, não sei por que, parece que o setModal travava o actionPerformed do botão… eu clicava e não resolvia nada…
agora eu não sabia que o setVisible impedia também!
vou testar…
Veja se podem me ajudar a achar o problema, eu apliquei o setModel true no meu JDialog, mas a tela principal não está aguardando o retorno da minha JDialog. Abaixo onde eu chamo minha JDialog no JFrame principal e o codigo da JDialog.
if (o.equals(itemCadastroCardapio)) {
new JDialogView(new CadastroCardapioView(operador,1));
}
public JDialogView( JPanel painel) {
// adjust size and set layout
painel.setPreferredSize(painel.getPreferredSize());
painel.setLayout(null);
// set component bounds (only needed by Absolute Positioning)
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
this.getContentPane().add(painel);
this.pack();
this.setLocationRelativeTo(null);
this.setIconImage(getToolkit().getImage("img/ico_logo.png"));
this.setResizable(false);
this.setVisible(true);
this.setModal(true);
this.setModalityType(DEFAULT_MODALITY_TYPE);
}
public void sair(){
this.dispose();
}
Eu criei o JDialog usando assim:
JDialog dialog = null;
e uso diretamente sem criar uma classe específica para ela:
dialog = null;
if ((dialog == null) || (!(dialog.isVisible()))) {
dialog = new JDialog();
dialog.setTitle("Renove agora sua Licença!");
dialog.add(painel);
// dialog.getContentPane().add(painelGeral);
dialog.setPreferredSize(new Dimension(800, 350));
dialog.pack();
dialog.setModal(true);
dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
//Centralizando a dialog no centro da tela
java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
dialog.setLocation((int) (d.getWidth() - dialog.getWidth()) / 2, (int) (d.getHeight() - dialog.getHeight()) / 2);
dialog.setVisible(true);
ou seja… eu faço a tela surgir diretamente de dentro de onde eu chamo.
Se for aparecer ao clicar em um botão por exemplo eu defino a variável lá no inicio e coloco ela setando null e criando-a dentro do actionperformed do botão.
Experimente como te disse ai em cima, criar a tela do JDialog de dentro do próprio JFrame.