ecco uno dei motivi per cui dico che gli IDE sono la rovina di chi sta imparando a programmare.

A prescindere da java, il main è una funzione particolare che serve da startpoint al programma.
Per fare in modo che una classe faccia da startpoint, devi giustamente inserire il metodo:

codice:
public class Main{
   public static void main(String args[]){}
}
per funzionare.
Ma la classe che ha al suo interno il main è una normalissima classe, per cui questo è valido
codice:
    public class Main{
      
      public Main(){}
      public void method1(){}
      
      private void method2(){
          method1(); 
      }
      public static void main(String [] args){
         Main main = new Main(); 
         main.method2(); 
      }
    }
che fa esattamente quello che fa il tuo main, ma (e fermo restando che quello non cambia) questo codice produce lo stesso result:

codice:
    public class Main2 {

         public static void main(String [] args){
            Main main = new Main(); 
            main.method1(); 
         }
    }
è chiaro quindi che da qualsiasi classe puoi richiamare un'altra classe istanziandola e richiamando i vari metodi disponibili (e la disponibilità è resa tramite i modificatori di visibilità).

Anche questo è valido
codice:
    public class Main2 {

         public static void main(String [] args){
            Main.main(args);
         }
    }
Nel tuo codice, devi avere un main che istanzia la tua classe che estende JFrame (facendo in modo che il costruttore chiami creagui). Ricorda l'EDT (quello che fa nel main è necessario)


ps chiedi al mod di spostarti, java ha la sezione dedicata