[RESOLVIDO] verificar se o Frame ou o Jdialog ja está aberto.. como?

14 respostas
dudu_sps

Queria a Ajuda… pra saber como verificar se o frame ja está aberto?

será que alguem pode dar alguma ajuda

desde ja agradeço

14 Respostas

R
dudu_sps:
Queria a Ajuda.. pra saber como verificar se o frame ja está aberto?

será que alguem pode dar alguma ajuda

desde ja agradeço

private void MenuCadVaraActionPerformed(java.awt.event.ActionEvent evt) {  
    if(cadsvar == null) {  
       cadsvar = new Cad_Simples(VARA);  //cria um novo objeto caso nao tenha sido criado  
       cadsvar.setSize(588, 369);  
       centraliza(cadsvar);  
       desktop.add(cadsvar);  
       cadsvar.setVisible(true);      
    }  
   
     
 }
M

Tente o método isVisible():

// supondo que seu JFrame chame-se janela
if (janela.isVisible()) {
    // está visível
} else {
    // não está
}
R

marcobiscaro2112:
Tente o método isVisible():

// supondo que seu JFrame chame-se janela if (janela.isVisible()) { // está visível } else { // não está }

Pocha marco é gambiarra usar o isVisible() para saber se o Frame esta ou não aberto, se você nao entendeu o código que eu postei posta a duvida.

R

Eu utilizo assim

Clientes telacli; 

if (telacli == null) {
            telacli = new Clientes();
            telacli.setVisible(true);
        } else {
            telacli.setVisible(true);
            telacli.setState(JFrame.NORMAL);
        }
R
rpassos81:
Eu utilizo assim
Clientes telacli; 

if (telacli == null) {
            telacli = new Clientes();
            telacli.setVisible(true);
        } else {
            telacli.setVisible(true);
            telacli.setState(JFrame.NORMAL);
        }

é foi essa a idéia que eu tentei passar.. blza fico melhor que o meu copy/paste ..

renamed

r4it0.light:
marcobiscaro2112:
Tente o método isVisible():

// supondo que seu JFrame chame-se janela if (janela.isVisible()) { // está visível } else { // não está }

Pocha marco é gambiarra usar o isVisible() para saber se o Frame esta ou não aberto, se você nao entendeu o código que eu postei posta a duvida.

Pq gambiarra?

R

renamed:
r4it0.light:
marcobiscaro2112:
Tente o método isVisible():

// supondo que seu JFrame chame-se janela if (janela.isVisible()) { // está visível } else { // não está }

Pocha marco é gambiarra usar o isVisible() para saber se o Frame esta ou não aberto, se você nao entendeu o código que eu postei posta a duvida.

Pq gambiarra?

vc consegue ver a diferença entre os códigos abaixo ?

primeira opção:

Clientes telacli;   
  
if (telacli == null) {  
            telacli = new Clientes();  
            telacli.setVisible(true);  
        } else {  
            telacli.setVisible(true);  
            telacli.setState(JFrame.NORMAL);  
        }

Agora usando o visible

segunda opção:

Clientes telacli = new Clientes;   
  
if (telacli.isVisible()) {  
          
        } else {  
            
        }

Usando o visible eu preciso da instancia de uma classe. Agora utilizando a primeira opção eu instancio quando é necessário a classe. Ou seja a primeira opção é código de uma pessoa

que entende o que é instanciar uma classe e qual o impacto disso. ok?? Não é mais elegante a primeira opção?

Sem falar que quando vc usa o isVisible para tratar esse problema tu ta atrelando a visibilidade da janela ao fato da mesma não existir isso sim está totalmente errado…

renamed

Depende do que vc chama de elegante…

Existem varias formas de se lidar com o problema, eu posso ter uma tela q recebe a outra por referencia e garanto que essa tela não é igual a nulo…

No exemplo que dei acima, o que vc disse vai por agua abaixo…

Por favor, menos arrogância e mais imparcialidade…

R

renamed:
Depende do que vc chama de elegante…

Existem varias formas de se lidar com o problema, eu posso ter uma tela q recebe a outra por referencia e garanto que essa tela não é igual a nulo…

No exemplo que dei acima, o que vc disse vai por agua abaixo…

Por favor, menos arrogância e mais imparcialidade…

Eu penso assim renamed,

Quero saber se uma janela existe, o que fazer ?

Uma janela é um objeto MUITO BOM então

if(janela != null)
      System.out.println("Janela existe");
else
      System.out.println("Janela não existe");

Eu quero saber se a janela está visível

if(janela.isVisible())

São duas coisas diferentes, agora se tu não tempo pra fazer do jeito certo aí sinto muito. Agora o fato da janela estar com visible false não tem nada haver com o fato de ela estar fechada.

R

Continuando …

Um exemplo de como separar o visible do fechado ou aberto neste caso

Janela j = new Janela

//estou passando a janela no construtor 
OutraJanela outra = OutraJanela(j)

//fechei a janela anterior  
j.dispose();
j=null;

Se alguém tem uma solução melhor, poste a solução eu acho este o melhor dos mundos, até dei uma ajuda para o garbage collector. :lol:

M

Não entendi o porque do gambiarra. A pergunta original foi:

Se ele está aberto e não se ele existe. Se fosse para verificar se ele existe, concordo que bastaria usar:

if (janela != null) {
// existe
} else {
// não existe
}

Agora como verificar se ele está “aberto”? Esse aberto pode ser interpretado como utilizável para o usuário, certo? Logo, verificar se ele está visível parece bem plausível.

dudu_sps

Ae Galera… me Ajudaram bastante

pra quem quer saber se o frame esta aberto utiliza

if(jframe == null){
}

e quem quiser saber se está visivel

if(jframe.isVisible()){

}

vlw Galera :wink:

dudu_sps

Resolvido mais ou menos

por exemplooo
to no meu formulario principal… dai abro um formulario que tem alguns campos
blz… preencho metade deles e fecho o formulario

dai na hora que eu abro esse formulari de novo

ele vem com os campos preenchidos como eu tinha deixado antes de fechar

ou seja… se eu abrir o formulario uma vez… ele vai fikar carregado na memoria até eu fechar o programa inteiro??

ou intão… ao eu fechar o formulario chamado … tem como deixar ele null de novo… pra quando eu abrir ele não aparecer tudo de novo???

M

Ele ficará na memória enquanto houver referências a ele ou a máquina virtual do Java for encerrada.

Para evitar que o formulário fique preenchido como antes, instacie-o novamente antes de mostrar. Por exemplo, suponhamos que temos um método mostraFormulario(). Ao invés de deixar somente assim:

void mostraFormulario() {
    formulario.setVisible(true);
}

Fazemos isso:

void mostraFormulario() {
    formulario = new Formulario(); // instanciamos novamente, criando um objeto totalmente novo
    formulario.setVisible(true); // e agora sim mostramos
}
Criado 12 de dezembro de 2009
Ultima resposta 16 de dez. de 2009
Respostas 14
Participantes 5