Como faço para meu programa não abrir 2 JFrames idênticos? (Resolvido)

8 respostas
zschornack

Alô pessoal! Será que alguém consegue tirar essa minha dúvida?

Estou criando um programa e gostaria de que ele não abrisse duas janelas idênticas… Tipo, se a janela de “vendas” já está aberta, ao clicar no botão “vender” não poderia abrir uma janela, pois a janela “vendas” já está aberta!?

Como faço para impedir que isso aconteça?

Espero que consigam entender.

Obrigado!!

8 Respostas

BlackDog

zschornack:
Alô pessoal! Será que alguém consegue tirar essa minha dúvida besta?

É possível carregar na memória dois objetos com o mesmo nome??
por exemplo:

JFrame janela = new JFrame(); //e de novo JFrame janela = new JFrame();

Obrigado!!

Não, primeiro que esse código vai gerar um erro e nem irá compilar pois você está duplicando a declaração de um objeto.

Para o código compilar você deveria ter algo assim:

JFrame janela = new JFrame(); //e de novo janela = new JFrame();

Esse código compila normalmente, porém, ao passar pela segunda declaração o objeto janela retornará as características inicias do objeto JFrame.

Robsonvnt

dentro da classe da janela de venda
vc cria um instacia estatica dela propria, por exemplo

...
public class frmVenda extends javax.swing.JFrame{

     public static frmVenda instance = null;
...

na tela que chama essa frame vc pode fazer o seguinte

if (frmVenda.instance == null){
    frmVenda.instance = new frmVenda();
    frmVenda.instance.setVisible(true);
}else{
    frmVenda.instance.requestFocusInWindow();
}

tenta alguma coisa assim

Robsonvnt

pesquisa como restaurar um JFrame pra no caso de ele estar minimizado

BlackDog

zschornack:
Alô pessoal! Será que alguém consegue tirar essa minha dúvida?

Estou criando um programa e gostaria de que ele não abrisse duas janelas idênticas… Tipo, se a janela de “vendas” já está aberta, ao clicar no botão “vender” não poderia abrir uma janela, pois a janela “vendas” já está aberta!?

Como faço para impedir que isso aconteça?

Espero que consigam entender.

Obrigado!!

Cara só não muda a pergunta que foi feita inicialmente, é preferivel que você abra um outro tópico.

Robsonvnt

pior que é mesmo o maluco mudou a pergunta uhahauuha
ate achei estranho a resposta, nem tinha lido a pergunta anterior

mas o zschornack procura não fazer isso
cria outro tópico, e antes disso pesquise, depois pergunte
:wink:
abraço!

zschornack

Foi mals, é que eu queria deletar o primeiro mas não encontrei essa opção ^^

Eu tinha acabado de resolver aquela dúvida ^^ então como não podia deletar eu mudei o post ^^

Achei que não tivesse problema, e duvidei que responderiam tão rápido…

Minhas humildes desculpas!

zschornack

Voltando ao post, quero agradecer ao Robsonvnt
Deu certo, só foi eu acrescentar uma linha ao seu código dentro do método construtor:

dentro da classe da janela de venda vc cria um instacia estatica dela propria, por exemplo
...  
 public class frmVenda extends javax.swing.JFrame{  
  
     public static frmVenda instance = null;  
 ...  

... public class frmVenda extends javax.swing.JFrame{ public static frmVenda instance = null; ...

[b]//dentro do construtor eu adicionei

instance = this;[/b]
na tela que chama essa frame vc pode fazer o seguinte
1. if (frmVenda.instance == null){  
   2.     frmVenda.instance = new frmVenda();  
   3.     frmVenda.instance.setVisible(true);  
   4. }else{  
   5.     frmVenda.instance.setVisible(true);  
   6.     frmVenda.instance.setExtendedState(JFrame.NORMAL);
   7.}  

if (frmVenda.instance == null){ frmVenda.instance = new frmVenda(); frmVenda.instance.setVisible(true); }else{ frmVenda.instance.requestFocusInWindow(); }

Valeuzão Robson!!

zschornack

Opa!
Faltou adicionar um evento

private void formWindowClosed(java.awt.event.WindowEvent evt) { instance = null; }

agora sim está funcionando legal!
Vlws!

Criado 27 de dezembro de 2008
Ultima resposta 27 de dez. de 2008
Respostas 8
Participantes 3