Dúvida com relação a criação e apagar um objeto

oii. boa noite.
Sou nova aqui no forum, se eu fizer algo de errado me desculpem.
mais, minha dúvida é a seguinte, eu preciso fazer uma tela de pesquisa, sei que o assunto é bastante batido, mais pesquisei nao consegui resolver o meu problema definitivo.
Eu fiz assim, criei no meu form de cadastro, dois construtores, e quando eu fecho o form de pesquisa eu chamo o form de cadastro novamente. o que acontece é que o primeiro objeto(o form de cadastro antes de pesquisar) fica aberto, nem com o dispose ele fecha, e se eu não instancio o novo objeto(na hora de exibir os dados escolhidos no form de pesquisa), eu nao consigo fazer com que os dados aparecam na tela de cadastro, a unica forma esta sendo mesmo instanciar um novo objeto. Entao minha dúvida é a seguinte, como fecho meu primeiro objeto ou como que eu passo os dados para o meu primeiro objeto?
Grata pela ajuda!

Vc ta usando que tecnologia? Se puder manda o código fonte para a galera dar uma olhada. :smiley:

Se a criação do segundo formulário é feita no momento em que pede o fechamento do primeiro form pode ser que conforme a framework, o pai (chamador do constutor e mostar) espere o termino do filho, nesse caso a solução é repassar a reponsabilidade para um pai tanto do primeiro quanto do segundo.

oi… e como eu poderia fazer isso DavidUser?
Obrigada!

siga este passo a passo que criei para usar o padrão singleton:

Passo 1: Cria-se a primeira tela
Passo 2: Cria-se a segunda tela

Vamos dizer que eu tenha um botão na tela 1 e quero abrir a tela 2, quando eu clico nesse botão.
De 2 cliques no botão e coloque o código em vermelho dentro do evento:

private void btnAbrirSubTelaActionPerformed(java.awt.event.ActionEvent evt) { JFrame NomeDaSuaSubTela = NomeDaSuaSubTela.getInstance(); NomeDaSuaSubTela.setVisible(true); }

OBS: Altere de acordo com o nome da sua subtela.
OBS2: o código ainda não funciona…

Passo 3:

Abra o arquivo da sua subTela e vá na aba código, Localize o código abaixo:

public class NomeDaSuaSubTela extends javax.swing.JFrame (esta logo no começo)

coloque o código abaixo logo depois…

private static NomeDaSuaSubTela instancia;

Passo 4:
Localize o construtor que deve estar assim:

public NomeDaSuaSubTela () { initComponents(); }
E troque por:

private NomeDaSuaSubTela () { // não esqueça que é agora é private initComponents(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); }

La em baixo No final do código antes da ultima ? } ? do arquivo da subtela coloque o seguinte código

public static NomeDaSuaSubTela getInstance(){ if(instancia == null){ instancia = new subTela(); } return instancia; }

Caso a subTela tenha um botão Exit, use o seguinte código:

this.dispose();

OBS: troque todos os NomeDaSuaSubTela pelo nome Real da sua Tela.

Dessa forma, só é possível abrir 1 subJanela de cada vez no evento do botão, usar setvisible(false) ao invés de Dispose() não é legal, por que a janela ainda vai continuar na memória com os dados que estavam nela. Dispose() exclui a janela da memória.


para passar dados da Tela principal para a SubTela é só criar uma sobrecarga para o método getInstance:

public static NomeDaSuaSubTela getInstance(int i, Cliente cliente, Etc etc){ if(instancia == null){ instancia = new subTela(); } return instancia; }