Soy nuevo en swing, pero logré crear una guía descendente.
Mi problema es que no pude aplicar los patrones sugeridos en las referencias/tutoriales, principalmente el patrón MVC.java swing vs mvc: ¿este patrón es realmente posible?
¿Soy yo, o en JTree y el uso de SwingWorker, no es posible tener una clara separación de controlador/vista/modelo?
Por ejemplo, uso un Swingworker, pero luego no puedo "ajustar" un controlador en el diseño.
I.e. la acción del control esencialmente está en el método doBackground que está dentro, por ejemplo, la acción de un botón.
Entonces no hay clase de controlador.
El resultado de la acción en swing worker es actualizar un Jtree, por lo que paso el resultado a un modelo de clase I, pero esta clase tiene que tener acceso al treeModel del Jtree que está dentro del JFrame, es decir, ver, por lo que no hay una clara separación de vista y modelo.
Miré a una gran cantidad de tutoriales pero todos presentando el MVC tenido un ejemplo trivial, y en la mayoría de los casos la vista (que era sólo un algunas etiquetas!) Actualizado todo. ¿Estoy completamente confundido, o no es posible o al menos es fácil integrar un patrón MVC en una aplicación de swing que usa swingworkers y jtrees?
Estoy hablando de los datos en el dominio real y no la MVC que se implementa en los componentes Swing.
¿Alguien puede ayudarme (y librarme de este terrible dolor de cabeza) ya sea con una visión general de cómo se puede abordar este diseño o al menos con un tutorial, que es útil, con un ejemplo no trivial?
Gracias
Entiendo lo que dices. Pero si creo un controlador, modelo, en el caso de JTree, tendría que mantener información sobre dónde se debe colocar un resultado producido por una acción en el árbol. El controlador puede pasar el resultado de una acción a mi modelo personalizado y el modelo puede disparar un evento a la vista de que hay una actualización disponible. Pero, ¿cómo puede el árbol saber dónde colocar el nuevo nodo (o actualizar el existente)? No quiero volver a pintar todo el JTree. Solo la parte que tiene que cambiar. Pero esto significa que el modelo debe conocer la estructura JTree. Entonces esta no es una separación limpia. ¿Derecha? – Cratylus
Cuando estoy usando un JTree para representar algo, normalmente estoy almacenando la información en el back-end como un árbol también. Esto significa que puedo transmitir algunos datos: la ubicación, la profundidad, etc. O bien, puedo usar TreeModel en el back-end como parte del modelo y hacer que active los eventos. Siempre que la vista no modifique directamente el modelo, no veo un gran problema allí. Espero que eso ayude a aclarar. – aperkins
@perkins: Perdón por haberte perdido en la última parte. Usted almacena en el modelo, por ej. DefaultMutableTreeModel del JTree, y actualizarlo usando sus métodos (add, insertNodeInto, etc.) del modelo? En la primera parte, ¿qué estructura utilizas para almacenar información en el back-end como un árbol? – Cratylus