Claro, puedes tener tantos JFrame como quieras en tu aplicacion, pero es logico que los listeners no se heredan puesto que a cada tipo de componente dentro de un JFrame de pertenece un listener y no se puede reutilizar por el solo hecho de que el jframe sea heredado.
Otra cosa, tu clase Proyecto hereda de un JPanel y el codigo que tienes en el main es:
principal=new JFrame();
Algo que no me queda claro con esto es(lo dibujare como un arbol):
+JFrame: Principal.
|__main()
|__setContentPane(new Proyecto()) <--- para mi esto seria lo mas logico, en vez de tener el main dentro del jpanel, porque no tenerlo dentro del jframe?
Otra cuestion a partir de esto es:
Tienes dos clases, una Proyecto(JPanel) y Principal(JFrame)?
si esto es asi, lo mas logico es que:
1. pongas el main en el JFrame y no en el JPanel, no se si me explique con esto.
2. Los listeners los pongas en el JFrame, que es la superclase en este caso.
Bueno, cualquier cosa postealo... Saludos