Criar interface gráfica inserindo código escrito

Olá a todos

Gostava que me ajudassem a identificar porquê que a minha janela gráfica não é exibida pelo netbeans uma vez que tenho “true” como argumento do setVisible num construtor duma classe que herda a classe JFrame.

Simplesmente o meu código não executa nada…
APROVEITO para questionar também:
1- o porquê da ncessidade de instanciar no metodo Void main com a expressão " new Jframe(); " somente… Qual o papel deste construtor uma vez que a classe em que estou a redigir o codigo já herda a classe JFrame…
2- Porque tenho de ter um metodo main nesta classe ? Interfaces só podem ser implementados em classe com main ?!?!?

Obrgada antecipadamente por explicações.
meu status é de iniciante…
Thanks

package estudando;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import javax.swing.JButton;

public class pessoa extends javax.swing.JFrame implements ActionListener {

@Override
public void actionPerformed(ActionEvent e) {
   // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  JOptionPane.showMessageDialog (null, "video Aula Grafica");
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

JButton Botao1 = new JButton(“nome do botão”);

public pessoa(){

    new JFrame();
    
    getContentPane();
    setTitle("JANELA 2");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    setLocationRelativeTo(null);
    setLayout(null);
    setSize(1000,500);
    
    add(Botao1); // é um método da classe JFRAME que cria e ADICIONA o Botão...pr isso temos de herdar a classe Jframe.
    Botao1.addActionListener(this); // é um método da classe JButton
    Botao1.setBounds(100,300,100,60); // é um método da classe JButton

}

public static void main(String[] args) {
JButton Botao1 = new JButton();
JFrame JF = new JFrame();
}

}