Un frame es un contenedor principal que aglutina elementos dentro dispuestos de una manera concreta, la cual está definida mediante un layout. Antes de ejecutar cualquier cosa hay que tener en cuenta cual es la disposición de los elementos por defecto dentro de un Jframe

Para poder crear un frame o bien se crea por constructor directamente o bien se extiende de JFrame

JFrame ventana = new JFrame("Titulo");

Los principales métodos utilizados son:

//Pone una barra de menú al frame
this.setJMenuBar();
//Pone la ventana visible
this.setVisible(true);
//Pone titulo a la ventana
this.setTitle("Titulo");
//Cierra la ventana al darle a la X DO_NOTHING_ON_CLOSE;
//Cierra el frame pero ejecuta la app DISPOSE_ON_CLOSE;
//Desaparece el frame pero sigue ejecutandolo HIDE_ON_CLOSE;
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Image ico = new ImageIcon(getClass().getResource("/resources/duke.png")).getImage();
//Pone un icono a la ventana
this.setIconImage(ico);
//Marca las coordenadas de inicio y dimensiones
this.setBounds(0,0,100,100);
//Abre la ventana con un tamaño determinado JFrame.MAXIMIZED_HORIZ;
//JFrame.MAXIMIZED_VERT;
//JFrame.ICONIFIED;
//JFrame.NORMAL
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
//Situa el panel relativo a un punto
this.setLocationRelativeTo(null);
//Marca cual es el panel contenedor de todo
this.setContentPane();
//Añade elementos al panel conteneder
this.getContentPane().add();
//Cambia el layout de la ventana
this.getContentPane().setLayout();

Hay que tener en cuenta que este elemento puede gestionar eventos de la misma forma que el resto.