Problemas com JInternalFrame

Boa tarde desenvolvedores e desenvolvedoras.

Estou com um probleminha aqui, sempre que eu tento abrir mais de uma JInternalFrame, ela fica por baixo da que já estava aberta antes e ainda assim, quando eu mudo o foco para a última aberta, os elementos das duas janelas ficam como “misturados”. Alguém já passou por isso? Sabe como resolver?

Já tentei this.setSelected(true); e this.requestFocus(); , porém, sem sucesso.

Abraço a todos e obrigado.

Não queria ser chato, mas seria possível não usar JDesktopPane/JInternalFrame? É que eles têm muitos problemas para serem usados - por exemplo, não é fácil fazer um frame “modal” (normalmente se usa um truque muito feio com GlassPane), não é fácil mexer no foco etc.

Se puder, use um JTabbedPane e ponha cada uma das suas telas em um JPanel.

Se você ainda não fez muita coisa, ainda dá tempo para mexer nisso.

Pensei nisso, mas, o projeto já está grande.
Eu estou jogando o JInternalFrame em um JFrame, não quis usar o JDesktopPane pq eu ouvi dizer que dava uma série de problemas.

Agora, tive esse mesmo problema tanto com JDesktopPane quanto com JFrame como container geral.

Acho que no próximo projeto que eu pegar, vou fazer como vc disse thingol, usar JTabbedPane, acho que vai facilitar mesmo. Mas, por hora, tenho esse “pepino” pra resolver.
Mesmo assim, obrigado.

Eu nunca tinha visto alguém usando um JInternalFrame fora de um JDesktopPane. (Na documentação eles dizem que é até possível, mas eu acho super-esquisito. Os exemplos que dão no Java Tutorial envolvem sempre um JDesktopPane).

http://java.sun.com/docs/books/tutorial/uiswing/components/internalframe.html

Ler a documentação não machuca. Que tal moveToFront ?

Então thingol, eu já tinha pensando no moveToFront, entretanto, ele não tem funcionado da forma que eu espero, talvez por eu não estar usando o JDesktopPane.
Vou tentar outras alternativas aqui, quando conseguir a resposta eu posto aqui.

Grato pela atenção.

Falae, eu estava com um problema parecido com esse… inclusive para saber se o JInternalFrame ja estava aberto… eu resolvi criando uma outra classe e criando um JDesktopPane no menu principal…
No evento que abre a janela do Internal Frame eu passo para a classe o JInternalFrame e o meu RdesktopPane…
resolveu o problema.

public void abreFrame (JInternalFrame iframe, JDesktopPane JDeskPanel){

        JDeskPanel.add(iframe);
        iframe.setIconifiable(true);        
        iframe.setVisible(true); 
        centralizaFrame(iframe, JDeskPanel);         
}

public void centralizaFrame(JInternalFrame iframe, JDesktopPane JDeskPanel){
int DeskX = JDeskPanel.getHeight(); //altura do deskpanel
int DeskY = JDeskPanel.getWidth(); // largura
int ifrX = iframe.getHeight(); //altura do frame a ser aberto
int ifrY = iframe.getWidth(); // largura
iframe.setLocation(DeskY/2 - ifrY/2, DeskX/2 - ifrX/2); // seta iframe para abrir no centro
}