¿Cómo implementar correctamente MVC en Java con Swing?

Si desea más detalles, por favor hágamelo saber o consulte las últimas líneas de esta pregunta. Ya leí mucho y siento que estoy convirtiendo algo simple en algo complicado y todavía me quedo atascado aquí y allá, así que quizás puedas ayudarme en esos puntos muy específicos.

Estoy usando Netbeans IDE 7 y JDK 7, y no frameworks. La primera ventana es un JFrame y todas las demás ventanas son JDialogs con modal = true.

Preguntas:

¿Cómo implemento correctamente el patrón MVC con swing? De las ideas de abajo ¿Cuál es mejor: (A) o (B)? O tal vez otro ... ¿Por qué es mejor?

(A) Principal:

MyModel model
MyView view(model)

Mi vista:

MyController(this, model)

(SEGUNDO)
Principal:

MyModel model
MyView View
MyController controller(view, model)

cuando hago clic en jbutton1 en MainFrame lo necesito para abrir SettingsFrame para editar la configuración. ¿Dónde debería crear una instancia de la Vista, el Modelo y el Controlador del Marco de configuración? En el controlador de mainframe?

En términos de organización e implementación de MVC, ¿cómo debo manejar características más específicas que (aparentemente) carecen de una o dos de las "patas" de MVC (ya sea Modelo o Vista o Controlador)? ¿Debo crear clases vacías para ellos?

a. The implementation of a TrayIcon
b. A URL connection class (an HttpsUrlConnection which will update data in the main jframe and also upload/download files)
c. A Directory Monitor (which will update data in the main jframe and also use the urlconnection to download a file)
d. My own implementation of TableModel
e. json

¿Cómo mantener y usar correctamente un objeto con configuraciones a través de toda la aplicación? Necesitaré su información en diferentes lugares (Vistas, Modelos, Controladores), pero el usuario puede modificarla durante el tiempo de ejecución). ¿Es una buena idea hacer de este modelo un singleton?

¿Qué debo hacer cuando:

a. View needs some data from the Model? 
What I'm doing: using the reference of Model which I keep in the View
b. View needs some data from the Controller?
What I'm doing: using the reference of Controller which I keep in the View
c. Model needs some data from the Controller?
Still didn't happen but I have no idea how to do correctly
d. Model needs some data from the View?
What I'm doing: pulling all my hair from my head...
e. Controller needs some data from the View?
What I'm doing: using the reference of the View which I keep in the Controller
f. Controller needs some data from the Model?
What I'm doing: using the reference of the Model which I keep in the Controller
g. One of FooModel, FooView or FooController needs data from one of BarModel, BarView or BarController?
What I'm doing: thinking of jumping from the highest building...

¿Algún consejo sobre cómo saber si implementé MVC correctamente? ¿Debo procesar datos masivos en modelo o controlador?

También estoy usando un DAO, lo que estoy haciendo es: mi modelo tiene un

ArrayList MyModel load ()

método que crea una instancia del DAO y devuelve la ArrayList de modelos devueltos por el DAO, y luego a veces proceso esta ArrayList de modelos en el modelo y algunas veces permito que el Controlador la procese. ¿Es esta una buena práctica o hay una mejor manera? Por Proceso quiero decir: iterar a través de ArrayList y obtener los datos de los modelos.

Tengo un PasswordCheck jDialog para restringir el acceso a algunas vistas. ¿Cómo puedo reutilizarlo en términos de MVC, de modo que pueda usar el mismo cuadro de diálogo PasswordCheck para permitir / restringir el acceso a diferentes Vistas sin desordenar el código?

¿Algún otro consejo, sugerencias, ideas, sugerencias?

Contexto: Estoy obligado a desarrollar un software Java Swing MVC en poco tiempo, aunque por defecto no soy un desarrollador de Java y no estoy tan acostumbrado a implementar el patrón MVC, especialmente en Java (tengo la idea pero a veces me falta el conocimiento) Implementar la relación entre clases). Las aplicaciones son básicamente un monitor para archivos locales / en línea con un JTable en el marco principal para mostrar estos datos. Estoy usando la nueva API de WatchService para realizar un seguimiento de los archivos locales y guardar su información en una base de datos h2 utilizando un DAO, y luego volver a cargar estos datos en la tabla de cuadros principal. También debo notificar al usuario sobre los nuevos archivos (que para el uso de TrayIcon). Para la supervisión / carga / descarga de archivos en línea, estoy usando HttpsUrlConnection y json. También puede permitir la personalización de la configuración.

Gracias de antemano por su tiempo y ayuda.

Respuestas a la pregunta(1)

Su respuesta a la pregunta