Estoy buscando orientación sobre las mejores prácticas para una aplicación que utilice Java Swing para ser estructurado. Normalmente soy un tipo de webapp e intento seguir MVC. ¿MVC es típico de las aplicaciones Swing? ¿Si es así, cómo?Java Swing Program Structure
Respuesta
se pueden encontrar este muy simple example and discussion útil.
Siguiendo MVC es una muy buena idea. Por lo que yo sé, no existe un marco formal de Java Swing que haga eso, todos se concentran en el aspecto de "Vista" del problema.
En cuanto a la estructura de la aplicación y MVC, el mejor marco que conozco es Griffon. No es Java, es Groovy, pero eso es lo que lo hace más atractivo y bastante fácil de aprender. La aplicación Griffon to a Swing es lo mismo que Grails en una aplicación web.
echarle un vistazo en http://griffon.codehaus.org/
oscilación tiene una relativamente buena puesta a punto de una arquitectura MVC, pero en realidad combina la vista y el controlador. Los componentes en Swing pueden tener oyentes conectados a ellos, que es el aspecto del controlador, y luego desde dentro de estos oyentes (que están dentro de los componentes) puede modificar la vista y el modelo en consecuencia. Entonces, para responder a su pregunta, sí, Swing ayudaría con un enfoque MVC a una aplicación Java.
En Swing, todavía tiene dos piezas separadas para VC: componentes y oyentes. La razón por la que digo que están combinados es porque cada componente puede tener su propio oyente respectivo. Estos oyentes suelen hacer la manipulación y son el aspecto del controlador. Los componentes están diseñados no solo para ser vistos en la pantalla, sino también para pasar información a estos oyentes. Las pulsaciones de botones, las pulsaciones de teclas, los cambios de enfoque, los cierres de ventanas, etc. se informan a los oyentes del componente respectivo por parte del componente. Aquí hay un fragmento de código simple para un botón con un oyente de acción, que registra presionar un botón.
ActionListener buttonListener = new ActionListener() {
public void actionPerformed(ActionEvent event) {
// Controller code
}
};
JButton button = new JButton("A Button");
button.addActionListener(buttonListener);
El ActionListener
es esencialmente el controlador, pero depende de button
para recibir la entrada del usuario. Aquí es donde oscilación confunde la diferencia entre la vista y el controlador desde un punto de vista MVC puro, pero al mismo tiempo, la distinción es todavía allí:
oyentes son los controladores (menos directamente interpretación de la entrada)
componentes son el vista (pero interpretar la entrada y lo pasan al controlador)
Espero que ayude :)
No creo que los oyentes sean controladores. Simplemente pueden usarse en un controlador para responder a eventos de componentes. –
Eso es lo que quise decir. En términos de MVC, no lo son, pero se puede pensar de esa manera. Los controladores toman la entrada y modifican el modelo. Los oyentes pueden no necesariamente tomar la entrada, pero sin duda se pueden utilizar para manipular el modelo y, como es con algunas interpretaciones de MVC, modificar la vista. Todo depende de qué parte de las responsabilidades del controlador desee poner más peso. – peppertherj
Hubo un JSR (296), que describe un marco para la construcción de oscilación de interfaz gráfica de usuario, pero parece que ha sido olvidado, echa un vistazo al siguiente artículo sin embargo:
http://java.dzone.com/news/jsr-296-end-jframe
he encontrado lo siguiente marcos, inicialmente basados fuera de él, que parecen prometedores:
- TRIPAS GUI - http://kenai.com/projects/guts/pages/Guts-gui
- BSAF - http://kenai.com/projects/bsaf
Estaría interesado en saber cómo funcionan en la práctica. Espero que ayuden
También hay esto (pero parece inactivo) - http://github.com/hamnis/SAFF – Jon
- 1. Tricky Java program
- 2. iOS Enterprise Program contra iOS Developer Program
- 3. Java Swing ventanas "niños"
- 4. Java Swing JMenu Mnemonic
- 5. Java Swing elemento transiciones
- 6. Java swing Cargando Animación
- 7. Ventana corrediza Java Swing
- 8. Swing Threading de Java
- 9. Java Swing JFrame Layout
- 10. Java Swing: Jtable ArrayIndexOutOfBoundsException
- 11. Java Swing ActionMap keys
- 12. Java Swing FlowLayout Alignments
- 13. ASP.Net MVC View Structure
- 14. MVC 3 project structure
- 15. if-else structure
- 16. redis structure, performance
- 17. Wordnet edit tree structure
- 18. SWIG Python Structure Array
- 19. Folder/File Structure Conventions?
- 20. Pyramid project structure
- 21. complex graphviz tree structure
- 22. Printing Table's structure/schema
- 23. BeginThread Structure - Delphi
- 24. Juegos Java 2d con Java SWING
- 25. Colores del botón Java Swing
- 26. Java GUI Swing Model Explicación
- 27. Java Swing BoxDiseño ignorando AlignmentX
- 28. Cómo depurar Java Swing Layouts
- 29. Java Swing: Problema de enfoque
- 30. pregunta general sobre Java Swing
Actualmente, Griffon es más Java que Groovy (al menos en su implementación). Te permite escribir una aplicación con Groovy o Java o incluso ambas al mismo tiempo. – aalmiray
Actualmente estoy esperando soporte completo (generación de código también) de Scala. Eso sería realmente agradable. Pensé que estabas trabajando en algo así :) –
Ya está allí. Instala el arquetipo scala y estás en el negocio. 'leonado instalar-arquetipo http: // svn.codehaus.org/leonado/arquetipos/Scala/trunk/Scala/scala-leonado-archetype.zip' ' leonado crear la aplicación de ejemplo -archetype = scala' Tenga en cuenta que el modo applet aún no es compatible. Descubrirás que puedes escribir cualquier artefacto de griffon (Modelo, Vista, Controlador, Servicio) con Scala. Incluso puede usar scala-swing en Views. – aalmiray