Estoy escribiendo una aplicación que actualmente tiene una GUI de SWT, pero me gustaría que los usuarios finales puedan elegir entre SWT y Swing. He experimentado con abstraer los detalles de la GUI antes en diferentes capas del programa, pero nunca he estado realmente satisfecho con los resultados. ¿Hay una forma acordada o agradable de hacer esto?¿Hay alguna manera de abstraer la GUI para poder usar SWT o Swing?
Respuesta
Lamentablemente, no creo que haya una API agnóstica de herramientas o similar.
Así que tal vez vale la pena mirar el patrón model-view-controller. Debe abstraer la mayor parte de la funcionalidad de la GUI al controlador, de modo que los componentes de la GUI sean delgados y estén dedicados al conjunto de herramientas de ventanas particular que haya elegido.
Esto le permitirá colocar una vista de Swing en lugar de una vista de GWT (o viceversa) con el mínimo de código duplicado.
Tenga en cuenta también que esto hace que la prueba de un lote sea más fácil, ya que la mayor cantidad posible se ha plegado en el controlador o modelo.
¿Existe alguna forma acordada o interesante de abstraer el código específico de la GUI?
La respuesta, en resumen, es no.
El problema al usar cualquier biblioteca de GUI en particular es que cada GUI viene con un conjunto de principios básicos de diseño que influyen en cada uso de la biblioteca. A menos que uno se encuentre con dos de tales bibliotecas que concuerden en cada detalle en estos principios de diseño, no hay una sustitución simple de una GUI por otra.
Hay una serie de bibliotecas que intentan imponer su diseño sobre un grupo de GUI dispares debajo de cada una con su propio diseño, pero estas bibliotecas requieren cantidades feroces de programación. Además, el intento de forzar a un conjunto de paradigmas de diseño a otro no suele ser completamente exitoso.
Ejemplos de estas bibliotecas son QT, wxWidgets y, por supuesto, el AWT base de Java.
Al final, casi tiene que aceptar que va a elegir una biblioteca y atascarse con ella.
Si su único objetivo es permitir que los usuarios elijan entre SWT o Swing dibujando su UI, entonces SWTSwing habría sido una opción. Podría codificar en SWT y elegir el contenedor de implementación de SWT durante el inicio y adaptar su ruta de clases según corresponda.
SWTSwing es una implementación de la API de SWT utilizando Swing. Hace lo mismo que hace cada implementación SWT nativa: proporciona el puente a la API GUI subyacente.
¿Por qué escribo "habría sido"? Lamentablemente, el proyecto parece muerto, atrapado en una implementación inacabada de SWT-3.2, aunque parece que se ha hecho mucho trabajo, como se puede ver en la demostración de webstart. El proyecto hermano EoS (Eclipse en Swing) tenía incluso un prototipo en ejecución. Entonces realmente no puedo recomendar usarlo, aunque me gusta la idea.
Sí, usando SwingWT, una implementación de Swing usando SWT como back-end.
Muchas personas prefieren las API de Swing de alto nivel, pero SWT usa widgets nativos. Esta biblioteca aparentemente te da ambas cosas.
También permite que las aplicaciones Swing se ejecuten sin modificaciones usando un back end de SWT (ya que su programa ya está escrito utilizando SWT que no lo ayuda, pero lo hará con otras). De acuerdo con la descripción, la implementación funciona utilizando un cargador de clases personalizado que reemplaza las llamadas Swing con llamadas a SwingWT. Debería ser posible dejar que el usuario seleccione si hacer esto.
El autor no parece estar desarrollándolo activamente, pero todavía está revisando/aplicando parches recibidos de otros (más recientemente, a principios de 2012).
- 1. ¿Cómo se puede direccionar una GUI Swing/JFace/SWT?
- 2. Java AWT/SWT/Swing: ¿cómo planificar una GUI?
- 3. ¿Hay alguna manera de usar Canvas en IE7 o IE8?
- 4. ¿hay alguna manera de usar tr /// (o equivalente) en java?
- 5. ¿Cuál es la mejor manera de hacer GUI en Clojure?
- 6. Comparar SWT con SWING
- 7. ¿Hay alguna manera de usar capistrano (o similar) para interactuar remotamente con la consola de rails
- 8. GUI para una aplicación independiente de Java. ¿Debo usar SWT o GWT?
- 9. Error o característica: Swing fuente gui predeterminada incorrecta para Win6 +
- 10. Mejor generador de GUI para Java/Swing
- 11. ¿Hay alguna manera de usar facetas con la gema pg_search
- 12. ¿La mejor manera para que una GUI de Swing se comunique con la lógica de dominio?
- 13. ¿Hay alguna manera de usar la especialización de plantilla para separar lo nuevo de lo nuevo []?
- 14. ¿Hay alguna manera de usar Markdown (o similar) en los campos de texto de Jira?
- 15. swt tutoriales o guías
- 16. ¿Hay alguna GUI gratuita para administrar AD LDS (ADAM)?
- 17. ¿hay alguna manera de usar C++ 0x en xcode? Quiero usar gcc 4.4 o superior
- 18. ¿Cómo mejorar la apariencia de JAVA swing GUI?
- 19. ¿Hay alguna manera de ejecutar la aplicación GUI de forma sin cabeza en Mac?
- 20. Aprendiendo Java Swing (¿Constructor de GUI o no?)
- 21. ¿Es posible usar SWT desde Jython?
- 22. ¿Hay alguna manera de usar maven para automatizar la reintegración de la rama de características?
- 23. ¿Hay alguna razón para usar Object.create() o new en JavaScript?
- 24. hex visualizador/editor componente GUI para Java Swing?
- 25. ¿Hay alguna manera de usar variables locales en los módulos?
- 26. Swing/AWT - Crear GUI programáticamente
- 27. ¿Recomendado Standalone Swing GUI Builder?
- 28. ¿hay alguna manera de poder insertar <iframe> en tinymce?
- 29. ¿Hay alguna manera de usar GET y POST juntos?
- 30. ¿Hay alguna manera de imitar o en genéricos de Java
Conocía este proyecto, y estoy triste de que esté muerto :( – ZoFreX