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!!!
Como chamar um Jframe bloqueando o acesso ao anterior?
6 Respostas
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
, 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.
Ops esqueci o link
http://java.sun.com/docs/books/tutorial/uiswing/misc/modality.html
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”.
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 !
Meu amigo tenho a mesma duvida se vc conseguiu fazer resolver me avisa por favor obrigado.
meu e-mail e msn. [email removido]
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
}