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

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!!

[quote=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!![/quote]

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.

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

[code]…
public class frmVenda extends javax.swing.JFrame{

 public static frmVenda instance = null;

…[/code]

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

1 curtida

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

[quote=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!![/quote]

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

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!

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!

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

[quote]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

[code]

  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(); }[/code] [/quote]

Valeuzão Robson!!

Opa!
Faltou adicionar um evento

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

agora sim está funcionando legal!
Vlws!