JFrame não é exibido

Galera, o q tem d errado neste código?
não manjo os gerenciadores de layout, to começando agora. Sei que se eu definir o tamanho da jabela “desmarcar o setsize” ele é exibido.

 @Override
       public JFrame CriaForm(){
         mascaras = new MaskFormatter[metaTab.length];
         f = new JFrame(nomeForm); 
      //f.setPreferredSize(new Dimension(500, 300));
         //f.setSize(800, 200);
      
         final Container cp = f.getContentPane();
         cp.setLayout(new BorderLayout());
      
         Campos = CriaCampos(metaTab);
      
      
      
      
      
         jp.setLayout(new BoxLayout(jp, BoxLayout.PAGE_AXIS));
      
         jp.add(j1);
         jp.add(j2);
         jp.add(j3);
         jp.add(j4);
      
         final JLabel jL1 = new JLabel("Escolha uma opção");
         jL1.setSize(20, 100);
      
         final JPanel jpC = new JPanel();
         jpC.setLayout(new FlowLayout());
         jpC.setPreferredSize(new Dimension(200, 100));
         f.add(jL1);
         jpC.add(Box.createVerticalGlue());
      
      
      
      //jpC.setVisible(false);
         cp.add(jp, BorderLayout.WEST);
         cp.add(jpC);
      
         j1.addActionListener(
                new ActionListener(){
                   public void actionPerformed(ActionEvent event){
                     campoPesquisa = ((AutoCompleteComboBox)Campos[1]);
                     cp.add(j5, BorderLayout.SOUTH);   											
                     jpC.add(((AutoCompleteComboBox)Campos[1]));
                     jpC.remove(jL1);
                    
                     camposResultado = new String[5][2];
                     camposResultado[0][0] = "NUM_MEMORANDO";
                     camposResultado[1][0] = "NOME";
                     camposResultado[2][0] = "CONTA";
                     camposResultado[3][0] = "VALOR";
                     camposResultado[4][0] = "DATA";
                     
                     camposResultado[3][1] = "DINHEIRO";
                     camposResultado[4][1] = "DATA";
                  	
                  	
                     outrosNomesCResul = new String[5];
                     outrosNomesCResul[0] = "N° do Memorando";
                     outrosNomesCResul[1] = "Credor";
                     outrosNomesCResul[2] = "Conta";
                     outrosNomesCResul[3] = "VALOR";
                     outrosNomesCResul[4] = "DATA";
                  
                     strSql = new String("SELECT m.NUM_MEMORANDO, m.CREDOR, M.data, c.ID, c.NOME, co.NOME as CONTA, m.VALOR FROM saude.memorando m INNER JOIN saude.credor c ON c.ID=m.credor INNER JOIN saude.conta co ON m.CONTA=co.ID where c.id="); 
                  }});	
                  
         j2.addActionListener(
                new ActionListener(){
                   public void actionPerformed(ActionEvent event){
                                       		
                  					
                  					
                  					
                  					
                  																
                  														
                  }});
      			 
      			 
         j5.addActionListener(
                new ActionListener(){
                   public void actionPerformed(ActionEvent event){
                     AcaoPesquisa();
                  
                  
                  }});
         f.setVisible(true);		
         return f;
      }