Problemas ao abrir o JInternalFrame.. (Resolvido)

Amigos,
estou com dificuldades em criar um JInternalFrame…
sim… estou fazendo uma tela…

porem, consigo fazer a tela extendendo ao JFrame e ao JDialog,
achei que JInternalFrame fosse a mesma coisa e mesmo padrão…

executo ela, e nem aparece nada… me falaraum para usar um JDesktopPane,
que essa seria a diferença…

Mais não da!
qual o problema?!?

algum exemplo?

Obrigado!

Amigo, é o seguinte: eu também já tentei instanciar um JInternalFrame estendendo de um JFrame, mas ele não instancia, não cria. Eu fiz da seguinte forma, criei minhas interfaces estendendo JPanel, e depois, no Frame principal que irá conter o JDesktopPane, instanciei um JInternalFrame e adicionei a classe que estende o JPanel, e mandei mostrar o JInternalFrame, funcionou.
Em código fica desse jeito:

Classe que estende JPanel:
public class PainelTeste extends JPanel
{ }

Classe Main, ou que chamará o JInternalFrame:
public class Main
{
JDesktopPane dp = new JDesktopPane();

    JInternalFrame jif = new JInternalFrame();

    PainelTeste pt = new PainelTeste();
    
    public static void main(String args[])
    {
         jif.add(pt);

         dp.add(jif);

         jif.setVisible(true);
         jif.pack();
     }

}

Bom,  é isto, se tu não conseguires me manda um e-mail que te mando um projeto que estou desenvolvedo, ok?!
Espero ter ajudado!!!

Ou seja:

Um JInternalFrame soh pode ser exibido dentro de um JDesktopPane.

para você usar o JInternalFrame vc vai ter q ter pelo menos um JFrame que terá um JDesktopPane. :lol:

nao deu =/

Olha ai um exemplo de JFrame com JDesktopPane, se vc tentar executar nao vai rodar pq nao estão todas as classes ai… mas já serve pra vc ver como q declara e adiciona… :!:

Estou com duvidas em relação a isso…

Porque assim,
tenho um MenuBar, com todos os seus componentes -> Menu > MenuItem… quando eu clico no menu item deveria aparecer a minha Janela.

Seria a minha classe menu uma JInternalFrame? ou as minhas janelas em si?

Se eu tenho uma classe de menus sendo JInternalFrame, as telas necessitaum ser JIternal? ou poderiaum ser JFrame normal como sempre fiz?

Algum exemplo teste?

Obrigado pelo exemplo Marcos, mas não vi bem sobre o JInternal…

vlw

Olha ai no arquivo q te passei:

cadastrosMenu = new javax.swing.JMenu();
funcionariosMenuItem = new javax.swing.JMenuItem();
...
cadastrosMenu.setMnemonic('C');
cadastrosMenu.setText("Cadastros");
funcionariosMenuItem.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/_24x24/cadastro_funcionario.png")));
funcionariosMenuItem.setText("Funcion\u00e1rios");
funcionariosMenuItem.addActionListener(new java.awt.event.ActionListener() {
    public void actionPerformed(java.awt.event.ActionEvent evt) {
        funcionariosMenuItemActionPerformed(evt);//ESSA É A AÇÃO
    }
});
cadastrosMenu.add(funcionariosMenuItem);

Essa parte declara o MenuItem e adiciona uma ação a ele;

private void funcionariosMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
    funcionariosFrame.getFuncionarioPanel().limparcampos(); // POR DEFAULT MINHA JANELA NÃO ESTÁ VISÍVEL E QUANDO EU FECHO USO O METODO HIDE_ON_CLOSE
    funcionariosFrame.setVisible(true); //AQUI VOCÊ FALA QUE SEU JInternalFrame DEVE APARECER NA TELA

Note que meus JInternalFrames são classes que extendem de JInternalFrame então foi por isso que você não viu no código. Mas considere funcionariosFrame como um objeto da classe JInternalFrame e não da classe FuncionariosFrame. :wink:

Cara, eu já vi isso…
se eu estivesse nesse passo… porem eu não estou,
Não estou conseguindo criar uma janela comum usando o JInternalFrame.

Classe a ser chamada no menu:

[code]
public class Teste extends JInternalFrame {

// Tenho que criar um JDesktopPane.. como faço?	

}[/code]

faço com JFrame assim:

[code]
public class Teste extends JFrame {

public Container container; // Cria a variavel...
	
public Teste() {
	
	// Tamanho

	// Titulo

	// chama o método que constrói a janela
}

public void MetodoQueCriaAJanela() {
	
	container = getContentPane();

	getContentPane().setLayout(null);
}

public static void main (String args[]) {
	
	new Teste(); // não seria necessario o main, pois eu chamo no Item do menu.
}

}[/code]

JFrame fica assim e abre no menuItem, já a JInternalFrame fazendo a mesma coisa que o JFrame não abre no menuItem, nem aparece… porque falta o tal do JDesktopPane… já tentei usalo, pensei que estava de maneira correta mais nao deu…

Minha classe menu esta normal, fiz uma pra teste aqui:

[code]
public class MenuPrincipal {

// variaveis do menu.

// cria o frame.

public MenuPrincipal() {
	// chama o método que cria a janela.
}

public JMenuBar Window() {

	menu_bar		=	new JMenuBar();
	
	menu			=	new JMenu("Sistema");
	menu_bar.add(io_menu);
	
	menu_item		=	new JMenuItem(io_ie_teste);		
	menu.add(io_menu_item);
	
	frame		=	new JFrame("Teste");
	frame.setJMenuBar(io_menu_bar);
	frame.setBounds(300,300,500,400);
	frame.setVisible(true);
	
	return		io_menu_bar;
}

}[/code]

Bom está ai o que estou tentando fazer…
Obrigado cara por estar me ajudando!!!

vlw

Supopnha que vc tenha esse JInternalFrame

/*
 * JInternalFrame.java
 *
 * Created on 17 de Abril de 2007, 10:22
 */

package janelas;

/**
 *
 * @author  Marcos Oliveira Junqueira
 */
public class JInternalFrame extends javax.swing.JInternalFrame {
    
    /** Creates new form JInternalFrame */
    public JInternalFrame() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jLabel1 = new javax.swing.JLabel();

        setClosable(true);
        setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("JInternalFrame");
        jLabel1.setText("jLabel1");
        getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>                        
    
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JLabel jLabel1;
    // Fim da declaração de variáveis                   
    
}

E esse JFrame

/*
 * JFrame.java
 *
 * Created on 17 de Abril de 2007, 10:21
 */

package janelas;

/**
 *
 * @author  Marcos Oliveira Junqueira
 */
public class JFrame extends javax.swing.JFrame {
    
    /** Creates new form JFrame */
    public JFrame() {
        initComponents();
    }
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Código Gerado ">                          
    private void initComponents() {
        jDesktopPane1 = new javax.swing.JDesktopPane();
        jInternalFrame1 = new janelas.JInternalFrame();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jDesktopPane1.setBackground(java.awt.SystemColor.desktop);
        jInternalFrame1.setBounds(0, 0, 210, 110);
        jDesktopPane1.add(jInternalFrame1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        getContentPane().add(jDesktopPane1, java.awt.BorderLayout.CENTER);

        jMenu1.setText("Menu");
        jMenuItem1.setText("Item");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });

        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        setJMenuBar(jMenuBar1);

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-408)/2, (screenSize.height-334)/2, 408, 334);
    }// </editor-fold>                        
    
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        jInternalFrame1.setVisible(true);
    }                                          
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new JFrame().setVisible(true);
            }
        });
    }
    
    // Declaração de variáveis - não modifique                     
    private javax.swing.JDesktopPane jDesktopPane1;
    private janelas.JInternalFrame jInternalFrame1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    // Fim da declaração de variáveis                   
    
}

Pelo que vi vc estava tentando adcionar o JDesktopPane ao JinternalFrame, mas ele é o container de JInternalFrames e deve ser inserido onde você quer que apareça o JInternalFrame, nesse caso o JFrame.

Funcionou,
e eu consigo entender corretamente…

só me explica mais uma coisa…
eu queria criar classes separadas, quando clicar em algum menuItem
abrir a tela de outra classe…

Como eu faria isso? como construir essa classe separada… extend ao JInternal?

Abraços!

Então, vc pode fazer um JPanel que tenha o seu formulário
dai vc faz

Então vc pode adicionar esse JPanel no seu JInternalFrame, pra isso vc precisa de um JInternalFrame

acho q é isso

esse projeto usa o jinternalframe…

http://codigolivre.org.br/projects/hospital-manage/

é livre…vc opde usar o codigo

Funcionou beleza!!!

Obrigado a todos!!!
o/