Hola...
A ver estas respuestas:
1. que cuando le opriman un boton a la principal no me saque otra instancia de la que ya esta creada osea de los otros Frames si ya estan abiertos
Si te sucede esto es que, dentro del método de proceso de eventos tienes un new JFrame (). Tendrías que hacer lo siguiente: Utiliza una variable JFrame como parte de tu formulario principal y ponla de inicio a null. Dentro de tu método haz:
if (mi_jframe1 == null) mi_jframe= new JFrame()...
else mi_jframe.setVisible(true) //Y / O cualquier otra acción que quieras.
Para más información, puedes buscar por internet datos sobre el patrón Singleton (no tiene traducción), que es algo parecido a esto.
2. que cuando se cierre el frame se descargue completamente y no tengo que ponerle el visible en false
No te recomiendo que hagas esto con tu ventana principal. Más aún, si en algún Frame guardas referencias a otros, porque los perderás. De todas formas, la forma de hacerlo existe.
Echa un vistazo al API de Java, en la clase JFrame, en herencia de JavaSwing.WindowConstants, a la constante DISPOSE_ON_CLOSE.
Espero que te sirva todo esto.
Ya nos contarás.
Suerte.
Silverfox