Pessoal, eu tenho uma aplicação Swing onde chamo programas externos através de
Process prc = rt.exec(comando,ambiente,arquivo) ;
até aí tudo tranquilo, o problema é que eu gostaria que a janela chamada fosse modal em relação ao sistema, ou seja, a pessoa só possa voltar a executar o sistema a partir do fechamento da tela, alguém sabe como fazer isto?
Deve-se usar o JDialog e o método setModal(true).
Desculpe, mas não entendi, exatamente onde eu deveria usar o JDialog?
santoro,
A sua aplicação em java chama outro programa independente? E vc quer que este programa seja modal?
A dúvida é: o que tem com o swing? O programa é exibido dentro de uma janela da sua aplicação ou é totalmente independente da sua aplicação(só é chamado por ela)?
Estou com um problema mais ou menos parecido com o seu.
Para ficar mais claro, tentei simplificar ao máximo o código
public class frmTelaPrincipal1 extends javax.swing.JFrame {
public JFrame janela = new JFrame();
public frmTelaPrincipal1() {
initComponents();
setLocationRelativeTo(null);
janela = this;
}
private void initComponents() {
// aqui vai a parte de layout
}
// ao clicar no botao chama este metodo
public void execGx(){
Runtime rt = Runtime.getRuntime();
String [] comando = new String[9];
// aqui vao varios comandos pois chama um java web start com varios parametros
String [] ambiente = {"path;"}; // se precisar de variáveis de ambiente, colocar aqui.
String caminho = "c:\\java\\Genexus Web Start";
File arquivo = new File(caminho);
try {
rt.exec(comando,ambiente,arquivo) ;
} catch(Exception ex){
ex.printStackTrace();
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frmTelaPrincipal1().setVisible(true);
}
});
}
Blz,
no caso vc quer que “Genexus Web Start” fique modal?
Cara, acho que isso é lance do SO. Estou precisando fazer isso aqui com runtime também. Estou olhando alguma coisa de passagem de mensagem pro SO, mas tá osso.
Não sei se é exatamente o que vc precisa, mas vou ver o que tenho aqui.
Isso mesmo a aplicação é Genexus e roda com Java Web Start, o que quero é que esta aplicação fique modal, mas tá complicado, não entendi direito como seria a mudança para o JDialog que foi falado.
Acredito que o que o Matheus falou foi controlar uma janela modal da sua aplicação.
Se vc tiver várias janelas na sua aplicação, deixar uma modal. O lance é que ela fica modal somente pra sua aplicação. Se vc abrir outro programa, este outro programa vai ficar por cima da sua aplicação, mesmo que a jdialog seja modal.
Agora, deixar um programa externo modal não sei se rola. O que dá pra fazer é jogar ele pra cima de tudo utilizando as mensagens do SO que mencionei antes. Mesmo assim vc pode abrir outro ou mudar por alt+tab.
Então pelo que percebi o Java Web Start abre a aplicação (tipo abrindo o JWS) e depois chama o programa que eu passei, este está sendo um problema, se abrisse direto o programa que passei eu poderia usar
Process prc = rt.exec(comando,ambiente,arquivo) ;
prc.waitFor();