Problema com JInternalFrame

:?:
Ola, pessoal.
Precisaria muito de uma dica de como resolver um problema que tenho. Sou iniciante en Java, mas ja desenvolvi algumas coisas nao muito complexas, e me deparei com um problema que nao consigo resolver, e nao encontrei nas pesquisas pela net. O problema é o seguinte, montei um menu de opcoes com jframe, nesse menu tenho varias opcoes de cadastro, consulta, impressao, cada uma dessa opcoes quando clicar é para abrir um jinternalframe, até ai tudobem, consigo abrir, so que quando abro tudo que ponho dentro desse jinternalframe nao aparece na tela, ela fica simplismente limpa sem nada, sendo que coloquei varios jlabel, jtextfield. queria saber onde que posso está errando, ou se alguem tem algum codigo exemplo parecido com esse meu para que possa estudar e resolver meu problema…

toda ajuda é bem-vinda.
Agradeço desde já…

Batista

Você está jogando o seu JInternalFrame dentro de um JDesktop?

E ai kra, blz?

Muito provavel que ao invés de vc estar chamando umas instância dos seus JInternalFrame, vc esteja chanado uma instância do JInternalFrame básico.

Suponhamos que vc tenha uma classe chamada FrmCadastroCliente…
Basicamente ela estaria assim:

public class FrmCadastroCliente extends JInternalFrame { // aki vc vai ter a inicialização dos seus componentes ... }

Quando vc for chamar este JInternalFrame vc tem que fazer assim:

public class FrmMain extends JFrame { // aki vc chama o JInternalFrame e joga ele dentro de JDesktopPane ... FrmCadastroCliente frmCadastroCliente = new FrmCadastroCliente(); desktopPane.add(frmCadastroCliente); ... }

:arrow: Ontem mandei um exemplo de JInternalFrame, dei uma alterada pra ver se dá uma luz pra vc… :wink:

Um abraço…

Classe do form Principal

[code]import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

/**

  • Exemplo aplicação MDI

  • @arquivo FrmMain.java

  • @author 01/12/2004 10:03:26 - Rodrigo G. Tavares de Souza [black_fire]
    */
    public class FrmMain extends JFrame {

    /**

    • Método que será executado quando o menu
    • for clicado, que neste caso será gerado
    • um novo frame MDI Cadastro e será exibido
    • no JDesktopPane.
    • @param e Recebe o evento
      */
      private void mnCadastroPerformed(ActionEvent e) {
      FrmCadCliente frmCadCliente = new FrmCadCliente(
      “Novo Cadastro #”+ String.valueOf(nrCad++),
      true, //resizable
      true, //closable
      true, //maximizable
      true //iconifiable
      );
      // Ajusta formulário para o tamanho dos componentes
      frmCadCliente.pack();
      // Qual procedimento será executado ao fechar o frame
      frmCadCliente.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
      // Deixa o frame visivel
      frmCadCliente.setVisible(true);
      // Adiciona o frame no DesktopPane
      getMdiPane().add(frmCadCliente);
      // Posiciona o frame
      frmCadCliente.setLocation(fx,fy);
      // Incrementa as váriaveis para posicionar os frames em cascata
      fx += 10;
      fy += 10;
      // Tenta enviar o foco para o frame criado
      try {
      frmCadCliente.setSelected(true);
      } catch (PropertyVetoException ex) {}
      }

    /**

    • Método que será executado quando o menu
    • for clicado, que neste caso será gerado
    • um novo frame MDI e será exibido no
    • JDesktopPane.
    • @param e Recebe o evento
      /
      private void mnNovoPerformed(ActionEvent e) {
      /
      Veja que aki estou usando a classe base
      • porém poderia ser por exemplo um tela sua
      • que estivesse extendendo JInternalFrame,
      • algo tipo:
      • JInternalFrame mdiFrame = new MeuFrameCadastroCliente();
        */
        JInternalFrame mdiFrame = new JInternalFrame(
        “Novo Frame MDI #”+ String.valueOf(nrForm++),
        true, //resizable
        true, //closable
        true, //maximizable
        true //iconifiable
        );
        // Tamanho do Frame
        mdiFrame.setSize(new Dimension(300, 250));
        // Qual procedimento será executado ao fechar o frame
        mdiFrame.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
        // Deixa o frame visivel
        mdiFrame.setVisible(true);
        // Adiciona o frame no DesktopPane
        getMdiPane().add(mdiFrame);
        // Posiciona o frame
        mdiFrame.setLocation(fx,fy);
        // Incrementa as váriaveis para posicionar os frames em cascata
        fx += 10;
        fy += 10;
        // Tenta enviar o foco para o frame criado
        try {
        mdiFrame.setSelected(true);
        } catch (PropertyVetoException ex) {}
        }

    /**

    • Adiciona os eventos na aplicação
      */
      private void addEvent() {
      // Adiciona o evento para o MenuItem [Novo Frame]
      mnNovo.addActionListener(
      new ActionListener(){
      public void actionPerformed(ActionEvent e) {
      mnNovoPerformed(e);
      }
      }
      );
      // Adiciona o evento para o MenuItem [Novo Cadastro]
      mnCadastro.addActionListener(
      new ActionListener(){
      public void actionPerformed(ActionEvent e) {
      mnCadastroPerformed(e);
      }
      }
      );
      }

    /**

    • Este componente é um container resposável
    • por exibir os formulários
    • @return Painel que exibe os formulários MDI
      */
      private JDesktopPane getMdiPane() {
      if (mdiPane == null) {
      mdiPane = new JDesktopPane();
      }
      return mdiPane;
      }

    /**

    • Inicalização do menu superior da aplicação.

    • @return Barra de menu Superior
      */
      private JMenuBar getMainMenu() {
      if (mainMenu == null) {
      mainMenu = new JMenuBar();
      // Cria o menu superiro
      mnPrinc = new JMenu(“Principal”);
      mnPrinc.setMnemonic(KeyEvent.VK_P);
      // Cria os itens do menu
      mnNovo = new JMenuItem(“Novo Frame”);
      mnNovo.setMnemonic(KeyEvent.VK_N);

       mnCadastro  = new JMenuItem("Novo Cadastro");
       mnCadastro.setMnemonic(KeyEvent.VK_C);
       
       mnPrinc.add(mnNovo);
       mnPrinc.add(mnCadastro);
       mainMenu.add(mnPrinc);            
      

      }

      return mainMenu;
      }

    /**

    • Inicializa componentes do formulários
      */
      private void initialize() {
      // Seta o layout para BorderLayout
      this.getContentPane().setLayout(new BorderLayout());
      // Adiciona compomentes no formulário
      this.getContentPane().add(getMainMenu(), BorderLayout.NORTH);
      this.getContentPane().add(getMdiPane(), BorderLayout.CENTER);
      // Adiciona evento que irá criar um novo formulário
      addEvent();
      // Configura o Frame principal para exibi-lo
      this.setSize(new Dimension(640, 480));
      this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      this.setTitle(“Exemplo Aplicação MDI”);
      this.show();
      }

    /**

    • Construtor básico, chama métodos para inicialização
    • do componentes do formulário
      */
      public FrmMain() {
      initialize();
      }

    public static void main(String[] args) {
    JFrame app = new FrmMain();
    }

    private JMenuBar mainMenu = null;
    private JMenu mnPrinc = null;

    private JMenuItem mnNovo = null;
    private JMenuItem mnCadastro = null;

    private JDesktopPane mdiPane = null;

    public static int nrForm = 1;
    public static int nrCad = 1;

    public static int fy = 0;

    public static int fx = 0;
    }[/code]


Classe do form de Cadastro

[code]import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**

  • @arquivo FrmCadCliente.java

  • @author 01/12/2004 10:10:14 - Rodrigo G. Tavares de Souza [black_fire]
    */
    public class FrmCadCliente extends JInternalFrame {

    private JPanel getPnlBottom() {
    if (pnlBottom == null) {

         btnNovo    = new JButton("Novo");
         btnAlterar = new JButton("Alterar");
         btnExcluir = new JButton("Excluir");
         btnGravar  = new JButton("Gravar");
         
         pnlBottom = new JPanel();
         pnlBottom.add(btnNovo);
         pnlBottom.add(btnAlterar);
         pnlBottom.add(btnExcluir);
         pnlBottom.add(btnGravar);
    
     }
     return pnlBottom;
    

    }

    private JPanel getPnlMain() {
    if (pnlMain == null) {
    lblNome = new JLabel("Nome: ");
    lblCidade = new JLabel("Cidade: ");
    lblUF = new JLabel("UF: ");
    lblCPF = new JLabel("CPF: ");

         txtNome    = new JTextField(20);
         txtCidade  = new JTextField(20);
         txtUF      = new JTextField(20);
         txtCPF     = new JTextField(20);
         
         pnlMain = new JPanel(new GridLayout(4,2));
         
         pnlMain.add(lblNome);
         pnlMain.add(txtNome);
         
         pnlMain.add(lblCidade);
         pnlMain.add(txtCidade);
         
         pnlMain.add(lblUF);
         pnlMain.add(txtUF);
         
         pnlMain.add(lblCPF);
         pnlMain.add(txtCPF);
         
     }
     return pnlMain;
    

    }

    /**

    • Inicializa componentes do formulários
      */
      private void initialize() {
      // Seta o layout para BorderLayout
      this.getContentPane().setLayout(new BorderLayout());
      // Adiciona compomentes no formulário
      this.getContentPane().add(getPnlMain(), BorderLayout.CENTER);
      this.getContentPane().add(getPnlBottom(), BorderLayout.SOUTH);
      // Configura o Frame principal para exibi-lo
      this.setSize(new Dimension(640, 480));
      this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
      this.setTitle(“Exemplo Aplicação MDI”);
      this.show();
      }

    /**

    • Construtor básico, chama métodos para inicialização
    • do componentes do formulário
      */
      public FrmCadCliente() {
      super();
      initialize();
      }

    public FrmCadCliente(String title) {
    super(title);
    initialize();
    }

    public FrmCadCliente(String title, boolean resizable) {
    super(title, resizable);
    initialize();
    }

    public FrmCadCliente(String title, boolean resizable, boolean closable) {
    super(title, resizable, closable);
    initialize();
    }

    public FrmCadCliente(String title, boolean resizable, boolean closable,
    boolean maximizable) {
    super(title, resizable, closable, maximizable);
    initialize();
    }

    public FrmCadCliente(String title, boolean resizable, boolean closable,
    boolean maximizable, boolean iconifiable) {
    super(title, resizable, closable, maximizable, iconifiable);
    initialize();
    }

    public static void main(String[] args) {
    ExemploMdi app = new ExemploMdi();
    }

    private JPanel pnlBottom = null;
    private JPanel pnlMain = null;

    private JLabel lblNome = null;
    private JLabel lblCidade = null;
    private JLabel lblUF = null;
    private JLabel lblCPF = null;

    private JTextField txtNome = null;
    private JTextField txtCidade = null;
    private JTextField txtUF = null;
    private JTextField txtCPF = null;

    private JButton btnGravar = null;
    private JButton btnNovo = null;
    private JButton btnExcluir = null;
    private JButton btnAlterar = null;
    }[/code]

Eu queria colocar no meu JDesktop (um form MDI principal com o menu e tal) uma imagem com o logo do sistema…como eu poderia fazer?