Abrir nova instancia do programa

3 respostas
cleiton_herrmann

Olá pessoal td bem?

Seguinte, em minha aplicação, na tela principal, coloquei um botao, que tem a função de abrir o meu programa denovo, sendo assim eu fico com 2 telas do meu programa abertas.

A ideia é a seguinte, o meu sistema é um capturador de pacotes, e talvez possa existir mais que um dispositivo de rede instalado no computador, e o usuario talvez pode querer capturar pacotes desses dispositivos de rede ao mesmo tempo, ai a solução é abrir 2 ou mais programas. Em minha aplicação, a primeira classe que é executada é a TelaPrincipal, entao no botao que mencionei acima, eu coloquei o seguinte código

new TelaPrincipal();

entao ele abre meu programa denovo, porém quando eu fecho qualquer um dos dois, os dois sao encerrados.
O que eu queria é deixar um independente do outro. Existe uma aplicação que faz isso, o jpcapDumper, porém no código dele, eu só encontrei um new jpcapdumper(); e nesse jpcapdumper quando eu fecho uma das instancias do programa a outra nao é encerrada também.
Alguem tem alguma ideia de como posso fazer isso?

3 Respostas

cu_ringa

qnd vc fechar em vez de chamar:

System.exit(0);

chame metodo dispose do JFrame.

dispose()
cleiton_herrmann

ola cu_ringa blz?

acho que eu nao expliquei direito, ó, eu tenho meu programa capturador de pacotes, se eu clicar no .jar dele 2 vezes eu terei 2 programas abertos, e um será independente do outro, se eu fechar um o outro nao será fechado, eu quero colocar um botao na tela do meu programa que ira abrir o meu programa denovo, que vai dar um new TelaPrincipal(), só que dai nao é a mesma coisa do que se eu der 2 cliques no .jar 2 vezes, pq se eu fechar uma a outra é fechada também.

Se eu colocar dispose pro meu formulario, até funciona, mais ó, eu executei o .jar, e cliquei no botao que da um new TelaPrincipal, dai abriu meu programa denovo certo, dai eu usei e tallz, e dai eu fechei um, com dispose, e o outro continuou, mais na hora de fechar o outro que será com dispose também, a minha aplicação nao será encerrada completamente, o dispose só irá liberar o espaço alocado no HEAP.
o que eu quero é executar meu programa denovo através desse botao, como se tivesse clicado 2 vezes no .jar da aplicacao.

se vc jah tinha entendido, desculpa falar denovo, e obrigado pela atenção ai.

cleiton_herrmann

bom, neim precisa mais esquentar a cabeça pessoal, consegui pensar em uma maneira de fazer o que eu queria, é meio gambiarra, mais funiona!!

o que eu fiz foi o seguinte

na classe da minha tela principal, eu criei dois construtores, um normal, e o outro com o mesmo conteudo, porém que recebe uma variavel bolleana chamada dispose. Dai quando eu executo pela primeira vez o meu programa, o método main da classe TelaPrincipal é chamado, e nele existe um new TelaPrincipal(); que ira usar o construtor que nao recebe parametro, blz até ai td normal.

public TelaPrincipal(){...}

Ai quando eu clico no botao para abrir meu programa denovo, eu passo o valor true, new TelaPrincipal(true); ai será executado o construtor com parametro.

public TelaPrincipal(boolean dispose){ this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); }
e nesse construtor eu seto a operação dispose_on_close do JFrame.
sendo assim, somente a instancia do programa que executou o método main podera encerrar a aplicação com o comando System.exit(0);as outras instancias irao fazer DISPOSE_ON_CLOSE

valeu cu_ringa pela ajuda e atenção, t+

Criado 15 de agosto de 2006
Ultima resposta 16 de ago. de 2006
Respostas 3
Participantes 2