Como chamar um Jframe bloqueando o acesso ao anterior?

6 respostas
P

Salve salve pessoal!!
estou fazendo uma aplicação utilizando swing na interface gráfica…
quando chamo um Jframe apartir de outro jframe preciso que o usuário não possa navegar entre os formulários… preciso que ele fique somente no form que ele chamou até que o feche…
como se fosse um showmodal lá do Delphi…
alguem tem alguma idéia!?!?!
abraços!!!

6 Respostas

E

Minha sugestao é em vez de a partir de um frame chamar outro frame é vc chamar um dialog. Os Dialogs tem a possibilidade de receber como argumento um “owner” ao qual ficam vinculados, esse vínculo pode ou não ter hummm… “modality” e caso haja vínculo modal, do mustang em diante, vc pode definir um entre vários escopos de bloqueio. Está bom de pagar mistério :smiley: , segue o link com o tutorial da sun onde eles ensinam a lidar com essa feature.
Namaste

PS1: Onde frame e dialog lê-se JFrame e JDialog.
PS2: Jamais, reafirmo, jamais, ao criar um dialog atribua null ao argumento owner, vc vai estar abrindo a caixa de pandora. Tah certo, jamais é forçar a barra, mais em aplicações profissionais e com a possíbilidade de ter vários frames abertos ao mesmo tempo não o faça.

E

Ops esqueci o link
http://java.sun.com/docs/books/tutorial/uiswing/misc/modality.html

T

pascoajr:
Salve salve pessoal!!
estou fazendo uma aplicação utilizando swing na interface gráfica…
quando chamo um Jframe apartir de outro jframe preciso que o usuário não possa navegar entre os formulários… preciso que ele fique somente no form que ele chamou até que o feche…
como se fosse um showmodal lá do Delphi…
alguem tem alguma idéia!?!?!
abraços!!!

O jeito padrão de fazer isso é com JDialog, como foi explicado pelo Ednelson. Só um JDialog é que pode ser tornado “modal”.

P

Desenterrando o post… ^^

So pra constar… além de usar o JDialog com o modal… vc pode utilizar o JFrame mesmo, mas terá que brincar um pouco com os eventos de janela e propriedades setEnable dos frames…

Entre as duas, prefira o JDialog !!!

Fui !

E

Meu amigo tenho a mesma duvida se vc conseguiu fazer resolver me avisa por favor obrigado.
meu e-mail e msn. [email removido]

E

Pessoal eu utilizo o netbeans vou mandar meu codigo onde ele chama o form.

import javax.swing.*;

public class telaPrincipal extends javax.swing.JFrame {

data mostra_data;

/** Creates new form telaPrincipal */
public telaPrincipal() {
initComponents();

}

----codigos----

private void jMI_ClientesActionPerformed(java.awt.event.ActionEvent evt){
// aqui nesta linha ele chama outro jFrame
new cad_Cliente().show();
}

private void jMI_SairActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}

/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new telaPrincipal().setVisible(true);

}
});
}

// Variables declaration - do not modify
// End of variables declaration

}
Criado 19 de agosto de 2005
Ultima resposta 1 de out. de 2007
Respostas 6
Participantes 5