Janela Modal com comando externos

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();