Chamar jinternalframe a parti de outro

Gente vcs podem me ajudar com esse problema que não estou conseguindo resolver de maneira alguma vejam, eu tenho um programa que tem como janela principal um JFrame e dentro dele tem um JInternalFrame com o nome login que tem os jtextfields e um botao pra logar no sistema que quando clicado se o login for realido com sucesso e para fechar esse jinternalframe de login e abrir um outro jinternalframe chamado explorer que possui um jtree com opçoes para o usuario clicar e abrir outras janelas dentro sempre do mesmo JFrame.

Porem esta dando um erro sempre que clico no botão login do Jinternalframe de login e com isso n abrir o outro jinternalframe que e necessario para que o programa continue em andamento vou mostra abaixo um pouco dos trechos para ver se algum consegui me ajudar.

/////////////////////////////////
//Aqui o evento do botão de login do JInternalFrame que e a tela de login do sistema ele deveria //chamar o metodo exibirExplorer da Classe MenuPrincipal que e o JFrame onde o programa inteiro //se desenrola.

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

new MenuPrincipal(this).exibirExplorer();

}
////////////////////////////////

/////////////////////////////////////////

Aqui a classe MenuPrincipal onde esta o metodo chamado pela jButton1 que esta na classe Login que e outro jInternalFrame

public void exibirExplorer(){

Explorer ex = new Explorer();

jDesktopPane1.add(ex);

ex.setVisible(true);

/////////////////////////////////////////

}

Ou seja esse trecho de codigo seria responsavel por abri outro JinternalFrame dentro da janela principal do programa que e a classe MenuPrincipal que e um JFrame onde todos os JintenalFrames do programa vai sendo add.

uma OBs: esse mesmo jinternalframe que n se abri quando e clicado no botão para logar de outro jinternalframe ele abri quando quando e clicado no botão que esta na clasee MenuPrincipal ou seja ele so n abri quando e clicado a partir de outro jinternalframe.

Os erros que aparecem são esses abaixo vejam:

Exception in thread “AWT-EventQueue-0” java.lang.UnsupportedOperationException: Not yet implemented
at locadora.MenuPrincipal.(MenuPrincipal.java:50)
at locadora.Login.jButton1ActionPerformed(Login.java:141)
at locadora.Login.access$000(Login.java:22)
at locadora.Login$1.actionPerformed(Login.java:74)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475)
at java.awt.Component.dispatchEvent(Component.java:4460)

Ou seja o problema e que não consigo chamar um JinternalFrame a partir de outro, alguem pode me ajudar com alguma dica pois ja tentei de varios modos e não consigo sendo que se for pra chamar o mesmo jinternalframe so que em vez de ser de um jinternalframe sendo de um menu da classe onde ele vai ser add no desktoppane ai nao tenho problemas.

Olá.

Cara, ano passado eu tive que fazer um projeto para a faculdade e fiquei com a mesma dúvida que você. Como abrir um InternalFrame dentro de outro. Apanhei muito com isso também. Porém contornei a situação de outra maneira.

Ao invés de abrir um JInternalFrame dentro de outro, eu abri um JDialog. Foi a maneira mais fácil que consegui para finalizar o projeto. O JDialog é ótimo para ser usado nessas situaçoes, pois você consegue pegaras informações dele e utilizar na tela anterior, sem acessar o banco de dados para atualizar as informações da tela anterior.

Caso você queira implementar dessa maneira, eu fiz um exemplinho bem simples para você.

package teste;

public class frmPrincipal extends javax.swing.JFrame {
    
    /** Creates new form frmPrincipal */
    public frmPrincipal() {
        initComponents();
        
        frmInternalFrame internalFrame = new frmInternalFrame();
        desktopPane.add(internalFrame);
        internalFrame.setVisible(true);
    }
        
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado "> Cógido gerado automaticamente
    // </editor-fold>                        
        
    // Declaração de variáveis - não modifique                     
    private javax.swing.JDesktopPane desktopPane;
    // Fim da declaração de variáveis                   
    
}

A classe acima seria sua classe Principal, no caso ela é um JFrame.

A classe abaixo é um JInternalFrame. Eu adicionei esse JInternalFrame no DesktopPane (como você pode ver na classe acima).
Criei um botão para chamar o Dialog.

[code]/*

  • frmInternalFrame.java

*/

package teste;

import java.awt.Frame;

public class frmInternalFrame extends javax.swing.JInternalFrame {

Frame parent;
public frmInternalFrame() {
    initComponents();        
    
     parent = this.parent; 
}
    
// <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          

//

private void abrirTelaInterna(java.awt.event.ActionEvent evt) {
frmDialog dialog = new frmDialog(parent, true);
dialog.setVisible(true);
}

// Declaração de variáveis - não modifique                     
private javax.swing.JButton jButton1;
// Fim da declaração de variáveis                   

}
[/code]

A classe abaixo é o JDialog que é chamado pelo JInternalFrame

/*
 * frmDialog.java
 *
 */

package teste;

public class frmDialog extends javax.swing.JDialog {
    
    /** Creates new form frmDialog */
    public frmDialog(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
    }
    

Dessa maneira você consegue abrir outra tela dentro de um JInternalFrame.