Verificação de janela aberta com problemas

Boa Tarde pessoal,
Eu havia colocado essa dúvida na parte de Java Básico, mas não obtive resposta ainda,talvez por estar em lugar errado. Quem sabe nessa área tenha sucesso.

Estou com um problema quanto a verificação de uma janela, visto que, eu tenho um programa que possui varias janelas internas e queria que apenas uma janela de cada fosse aberta não deixando abrir uma mesma janela mais de uma vez.
Porém com o código que usei ele realmente não deixa abrir mais de uma, só que não deixa também abrir nenhuma outra junto antes de fechar a aberta.

O q que estou fazendo de errado ?
Eu não usei o singleton, porque, olhando nos fóruns falam que tem que tomar cuidado ao usar e como pensei em algo mais simples está assim.

O método usado.

     private boolean InternalFrameAberto(JInternalFrame internalframe) { 
         JInternalFrame[] frames = desk.getAllFrames(); 
         for (int i = 0; i < frames.length; i++) 
         { 
         if(frames[i] instanceof JInternalFrame)
         {  
           return true; 
           }
         } 
        return false; 
     }
  

e chamo assim nas JInternalFrame

         JInternalFrame Task = new JanelaTask(desk);            
         if (InternalFrameAberto(Task) ==  true)
         { 
                   Task.dispose(); 
                   return; 
         }
         else 
         { 
                   desk.add(Task);
                   Task.setVisible(true);
         }
 

Obrigado,
Abraços.

Boa Tarde pessoal,

Seguinte, já que estava difícil uma solução pra esse código, eu estou tentando mudar ele. Ao invés de verificar desse jeito estou colocando assim.Ele da um false no enable do item.
Agora, como que eu faço ao fechar a janela, o menu volte a ficar com enabled(true) ?
Sendo que meus InternalFrames estão em outra classe.

JInternalFrame Task = new JanelaTask (desk);    
if (Task.isVisible()== false)
    {
    desktop.add(Task);
    Task.setVisible(true);    
    jMenuItemTask.setEnabled(false);
    }

Obrigado,
Abraços.