Problema com herança

ola galera…

estou com um problema sobre herança e preciso de uma forcinha de voceis…

é o seguinte:

tenho uma TELAMODELO, ela é composta por um internalframe, um painel com botoes (comuns para todas as telas de cadastros) e um jpanel com um label para enviar mensagem ao usuario.

dai tenho minhas telas de cadastros, cadastro de cliente, fornecedor, produto, etc.

usarei como exemplo o cadastro de cidade:

caso eu esteja cadastrando uma cidade e nao tenha o estado previamente cadastrado, irei clicar em um menuitem e selecionarei cadastrar estado, a qual usará a TELAMODELO para ser criado e na tela cidade será ocultada com um setvisible(false).

PROBLEMA:

depois de cadastrar o estado e fechar a tela de estado o meu jpanel para enviar informaçoes para o usuario simplesmente desaparece, e nao consigo mais fazer ele aparecer

postarei o codigo da telamodelo e do cadastro de cidade abaixo

TELA MODELO (deletei algumas coisas para nao ficar mais extenso do que é!)



package Interface.Tela.TelaCadastros;

import Interface.Componente.Componentes.MeuButton;
import Interface.Tela.TelaPesquisa.TelaPesquisaModelo;
import Interface.Tela.TelaPrincipal.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.event.InternalFrameEvent;
import javax.swing.event.InternalFrameListener;




public class TelaModelo extends  JInternalFrame implements ActionListener , InternalFrameListener{


      GridBagLayout gridTela;
      GridBagConstraints constraints;
      String NomeTitleBorder;
      Container painel1    = getContentPane();
      Container painel2    = getContentPane();
      public JPanel  jpCentral   = new JPanel();
      public JPanel  jpBotoes  = new JPanel();
      public JPanel  jpInformacoes  = new JPanel();
      TelaPesquisaModelo telaPesquisa;
      public static JLabel jlInfoCadastro = new JLabel();

      public MeuButton jbInserir   = new MeuButton("   Inserir","/img/salvar.png","/img/sal.png", 0,13,"Showcard Gothic",11);
      public MeuButton jbAlterar   = new MeuButton("   Alterar","/img/alterar.png","/img/edt.png", 0,13,"Showcard Gothic",11);
      public MeuButton jbPesquisar   = new MeuButton(" Pesquisar","/img/buscar3.png","/img/pesquisa10.png" ,0,13,"Showcard Gothic",11);
      public MeuButton jbConfirmar = new MeuButton(" Confirmar","/img/acept.png","/img/ace.png", 0,13,"Showcard Gothic",11);
      public MeuButton jbCancelar  = new MeuButton("  Cancelar","/img/cancel.png","/img/can.png", 0,13,"Showcard Gothic",11);

      static ImageIcon iconInformacao      = new ImageIcon("OutrosIcones/ico4.png");
      static ImageIcon iconErro      = new ImageIcon("OutrosIcones/ico2.png");
      static ImageIcon iconSucesso      = new ImageIcon("OutrosIcones/ico3.png");

      String menu1;
      public JMenuBar jmbPrincipal = new JMenuBar();
      public JMenu jmCadastro = new JMenu("<html><b>Cadastros");
      public JMenuItem jmiMenu1 = new JMenuItem();
      public JMenuItem jmiMenu2 = new JMenuItem();
      public JMenuItem jmiMenu3 = new JMenuItem();

      public static JDesktop jpDesktop = new JDesktop();

      public boolean dadoValido;


   public TelaModelo(String titulo,String NomeTitleBorder, int largura, int altura) {
      super(titulo);
      setTitle(titulo);
      setSize(largura,altura);
      gridTela = new GridBagLayout();

      jlInfoCadastro.setFont(new Font("Dialog", Font.BOLD, 12));
      constraints = new GridBagConstraints();
      painel1.add("North", jpCentral);
      painel1.add("Center", jpInformacoes);
      painel2.add("South", jpBotoes);
      jpInformacoes.add("Center",jlInfoCadastro);
      jpInformacoes.setBorder(new TitledBorder(""));
      jpCentral.setBorder(new TitledBorder(NomeTitleBorder));
      jpBotoes.setBorder(new TitledBorder("Opções"));
      jpBotoes.setLayout(new GridLayout(1,5));
      jpCentral.setLayout(gridTela);
      jpBotoes.add(jbInserir);
      jpBotoes.add(jbAlterar);
      jpBotoes.add(jbPesquisar);
      jpBotoes.add(jbConfirmar);
      jpBotoes.add(jbCancelar);

      setJMenuBar(jmbPrincipal);
      jmbPrincipal.add(jmCadastro);
      jmCadastro.add(jmiMenu1);
      jmCadastro.add(jmiMenu2);
      jmCadastro.add(jmiMenu3);
      jbAlterar.getSize();

      jbAlterar.setToolTipText("<html>Depois de Carregar Alguma Informação<br> Permite a Alteração Da Mesma");
      jbCancelar.setToolTipText("Cancelar Operação Sendo Realizada e Limpa os Campos");
      jbConfirmar.setToolTipText("Confira a Operação em Andamento");
      jbPesquisar.setToolTipText("Pesquisar Informações e Disponibiliza Outras Opções de Interação");
      jbInserir.setToolTipText("Libera os Campos Para Inserir Informações");
     
      Component content = this.getContentPane();
      int x = (content.getWidth() + 350);
      int y = (content.getHeight()+ 200);
      this.setLocation(x, y);
      addEventos();
      MenuBarTelaModelo();
      maximizaMinimizaFecha();
      setResizable(false);
      setVisible(true);

   }

   public void MenuBarTelaModelo(){
        jmbPrincipal.setVisible(false);
        jmCadastro.setVisible(false);
        jmiMenu1.setVisible(false);
        jmiMenu2.setVisible(false);
        jmiMenu3.setVisible(false);
        jmiMenu1.addActionListener(this);
        jmiMenu2.addActionListener(this);
        jmiMenu3.addActionListener(this);
   }


      public static void setLabelCadastro(String mensagem,int erro){
        if(erro == 1){
            jlInfoCadastro.setText(mensagem);
            jlInfoCadastro.setIcon(iconErro);
            jlInfoCadastro.setForeground(Color.red);
        }
        if(erro == 2){
            jlInfoCadastro.setText(mensagem);
            jlInfoCadastro.setIcon(iconSucesso);
            jlInfoCadastro.setForeground(new Color(0,205,0));
        }
        if(erro == 3){
            jlInfoCadastro.setText(mensagem);
            jlInfoCadastro.setForeground(new Color(0,245,255));
        }
        if(erro ==4){
            jlInfoCadastro.setText(mensagem);
            jlInfoCadastro.setIcon(iconInformacao);
            jlInfoCadastro.setForeground(Color.BLUE);
        }
    }
   public void addEventos(){
      jbInserir.addActionListener(this);
      jbAlterar.addActionListener(this);
      jbPesquisar.addActionListener(this);
      jbConfirmar.addActionListener(this);
      jbCancelar.addActionListener(this);
      addInternalFrameListener(this);
   }
   public void maximizaMinimizaFecha(){
       this.resizable = false;
       this.closable = true;
       this.maximizable = false;
       this.iconable = true;
   }



   public void habilitaBotoes(boolean status) {
      jbInserir.setEnabled(status);
      jbAlterar.setEnabled(status);
      jbPesquisar.setEnabled(status);
      jbConfirmar.setEnabled(!status);
      jbCancelar.setEnabled(!status);
   }

      public void addComponent(Object component, int linhaini, int colunaini,int largura, int altura, int ncoluna, int nlinha){
          constraints.anchor = GridBagConstraints.WEST;
          constraints.gridx=colunaini;
          constraints.gridy=linhaini;
          constraints.gridwidth=ncoluna;
          constraints.gridheight=nlinha;
          constraints.insets = new Insets(5, 5, 5, 5);
          jpCentral.add((Component) component, constraints);
    }



  }

TELA CADASTRO DE CIDADE


        /*
        * To change this template, choose Tools | Templates
        * and open the template in the editor.
        */

        package Interface.Tela.TelaCadastros;

        import Banco.Tela.Cadastros.Cidade;
        import Banco.Tela.Cadastros.Estado;
        import Interface.Componente.Componentes.Campos;
        import Interface.Componente.Componentes.MeuCombo;
        import Interface.Tela.TelaPesquisa.TelaPesquisaCidade;
        import Interface.Tela.TelaPrincipal.TelaPrincipal;
        import Interface.Tela.TelaPrincipal.VerificaTelaAberta;
        import java.awt.event.ActionEvent;
        import java.awt.event.ActionListener;
        import javax.swing.JComboBox;
        import javax.swing.JLabel;
        import javax.swing.JTextField;
        import javax.swing.event.InternalFrameEvent;


        public class TelaCadastroCidade extends TelaModelo implements ActionListener{

        private Cidade cidade = new Cidade();
        private Estado estado = new Estado();
        static TelaPesquisaCidade telaPesquisa ;
        TelaCadastroEstado telaEstado;
  
        private JLabel jlCodigo = new JLabel("<html><b>Codigo: ");
        private JLabel jlNome = new JLabel("<html><b>Nome: <font color = red>*");
        private JLabel jlEstado = new JLabel("<html><b>Estado: <font color = red>*");
        private JLabel jlStatus = new JLabel("<html><b>Status: <font color = red>*");

        public JTextField tfCodigo = new JTextField(4);
        public Campos tfNome = new Campos(22,3,true);
        private String status[] = {"ATIVO","INATIVO"};
        private JComboBox jcStatus = new JComboBox(status);
        private MeuCombo jcEstado = new MeuCombo("select codigoEstado, nome from estado where status = 'ATIVO' order by nome");


        private String codigo;
        private int codigoEstado;
        private String nome;
        private String status2;
        public static int codigoBuscar;
        public boolean insert = false;

        Object[] teste;
      


        public TelaCadastroCidade(String titulo,String NomeTitleBorder, int largura, int altura){
            super(titulo,NomeTitleBorder, largura, altura);
            TelaPrincipal.setInformacoes("Cadastro de Informações Referentes a Cidades", 3);
            TelaModelo.setLabelCadastro("", 1);
            addCampo();
            addEvetos();
            setVisible(true);
        }

        private void addCampo() {
            addComponent(jlCodigo, 1, 0, 1, 1, 1, 1);
            addComponent(tfCodigo, 1, 1, 1, 1, 1, 1);
            tfCodigo.setEnabled(false);
            addComponent(jlStatus, 1, 2, 1, 1, 1, 1);
            addComponent(jcStatus, 1, 3, 1, 1, 1, 1);
            addComponent(jlNome, 2, 0, 1, 1, 1, 1);
            addComponent(tfNome, 2, 1, 1, 1, 3, 1);
            addComponent(jlEstado, 3, 0, 1, 1, 1, 1);
            addComponent(jcEstado, 3, 1, 1, 1, 3, 1);
            bloqueiaCampos(false);
        }

        @Override
        public boolean validacaoDados (){
            if(tfNome.getText().trim().length() == 0){
                TelaPrincipal.setInformacoes("O Campo Nome Não Foi Preenchido Corretamente", 1);
                TelaCadastroCidade.setLabelCadastro("Preencha o Campo Nome", 3);
                tfNome.requestFocusInWindow();
                return dadoValido = false;
            }
            if(jcEstado.getSelectedIndex() == -1 ){
               TelaPrincipal.setInformacoes("O Campo Estado Não Foi Preenchido Corretamente", 1);
               TelaCadastroCidade.setLabelCadastro("Preencha o Campo Estado", 3);
               return dadoValido =  false;
            }
            return dadoValido = true;
        }

        public void verificaDuplicidade(){
            cidade.setDuplicidadeNomeCidade(tfNome.getText());
            cidade.setDuplicidadeEstado(jcEstado.getValue());
            cidade.verificaDuplicidade();
        }

        @Override
        public  void inserir(){
            // inserir no banco de dados
            cidade.setCodigoEstado(jcEstado.getValue());
            cidade.setNome(tfNome.getText());
            cidade.setStatus(jcStatus.getSelectedItem().toString());
            cidade.inserirCidade();
        }

        public void alterar(){
            // altera dados do cadastro cidade
            cidade.setCodigo(Integer.parseInt(tfCodigo.getText()));
            cidade.setNome(tfNome.getText());
            cidade.setCodigoEstado(jcEstado.getValue());
            cidade.setStatus(jcStatus.getSelectedItem().toString());
            cidade.alteraCidade();
        }

        public void setCodigoBuscar(int codigoBuscar ){
            //Joga Dados na Tela De Cadastro
            Object []dadosSelect = cidade.preencheTelaCidade(codigoBuscar);
            codigo = dadosSelect[0].toString();
            nome = dadosSelect[1].toString();
            codigoEstado = Integer.parseInt(dadosSelect[2].toString());
            status2 = dadosSelect[3].toString();

            tfCodigo.setText(codigo);
            tfNome.setText(nome);
            jcEstado.setValue(codigoEstado);
            jcStatus.setSelectedItem(status2);
            bloqueiaCampos(false);
            this.setVisible(true);
            telaPesquisa.setVisible(false);
            TelaCadastroCidade.setLabelCadastro("Dados Da Cidade " + nome.toUpperCase() + " Disponiveis!" , 2);

      }

    @Override
    public void bloqueiaCampos(boolean permitirEdicao) {
        if(permitirEdicao == false){
            tfNome.setEditable(false);
            jcEstado.setEnabled(false);
            jcStatus.setEnabled(false);
        }else{
            tfNome.setEditable(true);
            jcEstado.setEnabled(true);
            jcStatus.setEnabled(true);
        }
    }



        @Override
        public void actionPerformed(ActionEvent e) {
                if (e.getSource() == jmiMenu1) {
                    if(VerificaTelaAberta.verificaFrame(jpDesktop, telaEstado)==false){
                       telaEstado = new TelaCadastroEstado("Cadastro de Estado","Dados do Cadastro de Estado", 280,240);
                        TelaCadastroEstado.setLabelCadastro("Campos Com * São Obrigatórios", 4);
                        teste = jpInformacoes.getComponents();
                        TelaPrincipal.jpDesktop.add(telaEstado);
                        this.setVisible(false);
                        telaEstado.addInternalFrameListener(this);

                    }else{
                        telaEstado.moveToFront();
                    }
                }

             
             if (e.getSource() == jbPesquisar) {
                 if(VerificaTelaAberta.verificaFrame(jpDesktop, telaPesquisa) == false){
                        telaPesquisa = new TelaPesquisaCidade("Pesquisa Dados das Cidade", this);
                        TelaPrincipal.jpDesktop.add(telaPesquisa);
                        jpDesktop.moveToFront(telaPesquisa);
                        TelaPrincipal.setInformacoes("Disponibiliza Dados das Cidades Usadas em Varios Tipos de Cadastros", 2);
                        this.setVisible(false);
                 }else
                     telaPesquisa.moveToFront();
            }

            if (e.getSource() == jbConfirmar){
                habilitaBotoes(true);
                bloqueiaCampos(true);
                     if (validacaoDados() == true){
                        if(verificaInsert() == true){
                            verificaDuplicidade();
                            if (cidade.verificaDuplicidade() == false){
                                inserir();
                                limpaTela();
                            }
                        }
                        if (verificaInsert() == false){
                                alterar();
                                limpaTela();
                                bloqueiaCampos(true);
                        }
                }
            }
            if (e.getSource() == jbAlterar){
                habilitaBotoes(false);
                bloqueiaCampos(true);
                jbConfirmar.setEnabled(true);
            }
            if (e.getSource() == jbPesquisar){
                habilitaBotoes(false);
                jbAlterar.setEnabled(true);
                jbCancelar.setEnabled(true);
                jbConfirmar.setEnabled(false);
                jbInserir.setEnabled(false);
                
            }

          if (e.getSource() == jbCancelar){
             habilitaBotoes(true);
             TelaPrincipal.setInformacoes("Bem-Vindo ao S.M.I.C.S - Sistema de Gerenciamento de Fazendas Agricolas", 3);
             TelaModelo.setLabelCadastro("Campos Com * São Obrigatórios", 4);
             bloqueiaCampos(false);
             limpaTela();
          }
            if (e.getSource() == jbInserir){
                habilitaBotoes(false);
                bloqueiaCampos(true);
            }

        }

        @Override
        public void MenuBarTelaModelo(){
            jmbPrincipal.setVisible(true);
            jmCadastro.setVisible(true);
            jmiMenu1.setText("<html><b>Estado");
            jmiMenu1.setIcon(TelaPrincipal.iconCadEstado);
            jmiMenu1.setVisible(true);
            jmiMenu2.setVisible(false);
            jmiMenu3.setVisible(false);

        }

        private void addEvetos() {
            jmiMenu1.addActionListener(this);
            jbCancelar.addActionListener(this);
        }

        @Override
        public void limpaTela(){
            jcEstado.setValue(0);
            tfNome.setText("");
            tfCodigo.setText("");

        }

        public boolean verificaInsert(){
            String verifica = "";
            verifica = tfCodigo.getText();
            if(verifica.equals("")){
                 insert = true;
            }else
                if(!verifica.equals(""))
                    insert = false;
            return insert;

        }


    @Override
      public void internalFrameClosed(InternalFrameEvent e) {
          super.internalFrameClosed(e); 
            if(e.getSource() == telaEstado){
              this.setVisible(true);

              

          }
      }
  }

desde ja agradecendo a ajuda :stuck_out_tongue: