java swing user-interface look-and-feel swingx

¿Cómo puedo crear una aplicación de escritorio Java de "aspecto moderno"?



swing user-interface (8)

Se hacen preguntas similares a esto periódicamente, pero muchas de estas respuestas están desactualizadas.

Necesito construir una aplicación de escritorio multiplataforma en Java con una GUI de calidad comparable a las aplicaciones de escritorio contemporáneas.

Swing es la opción predeterminada, pero todavía tengo que encontrar una aplicación Swing que, al menos, no parecía bastante anticuada y torpe (subjetiva, lo sé, pero con las GUI es difícil evitar los juicios estéticos).

Observé que el nuevo cliente de Bitcoin ahora usa QT con enlaces de Java, y tiene una interfaz de usuario atractiva, pero esto tiene la desventaja de que ya no es solo Java.

Mucho de lo que encuentro cuando busco bibliotecas relacionadas con Swing tiene 5 años o más, a pesar de que la estética de las aplicaciones de escritorio ha evolucionado significativamente desde entonces.

Si necesitabas crear una aplicación de escritorio Java desde cero, ¿qué usarías para su GUI?


¿Has mirado en JavaFX 2.0 ? Está diseñado para interoperar fácilmente con Swing, y tiene muchos controles modernos de ''buena apariencia''.

Además, como lo menciona lrAndroid, una aplicación Swing puede parecerse a una aplicación nativa si configuras el aspecto del sistema con:

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());



Considere cambiar la apariencia de su programa Java. Esto le permite personalizar el "tema" general de su programa. Here hay información sobre cómo cambiar LAF.


Los marcos de JavaScript modernos (ExtJS, Dojo, etc ...) ofrecen la misma riqueza de widgets o más (como cuadrículas de Excel, por ejemplo), una variedad más amplia de L & F y, por lo general, se ajustan mejor con el sistema operativo del usuario. Los usuarios también están muy cómodos con sus navegadores y, oye, "cosas modernas" están en la web, y la web moderna de hoy es HTML + Javascript.

La sobrecarga de convertir una aplicación a "similar a la web" es mínima. Un Jetty integrado puede permanecer muy pequeño y el espacio en el disco se ha convertido en un problema mucho menos importante.

Hay beneficios adicionales yendo por esta ruta para las futuras evoluciones de la aplicación.

  • De repente, la aplicación de escritorio se convierte en una aplicación de servidor, a la que se puede acceder desde otro escritorio. Pudimos promocionar una aplicación de escritorio en el "portal" en cuestión de semanas.
  • Reescribir la aplicación en términos de servicios web (Ajax) proporciona una transición fácil para crear una pila de servicios REST (o SOAP ...) completa. La aplicación puede integrarse a otras aplicaciones, monitorearse fácilmente externamente, etc.
  • El soporte de otros dispositivos (teléfonos inteligentes, tabletas, ...) se vuelve mucho más fácil, al concentrarse únicamente en la capa de IU
  • A medida que la aplicación crece, la separación de las preocupaciones es más clara; los desarrolladores que trabajan en la interfaz de usuario no tienen que meterse con el código de bajo nivel.
  • Hay muchos excelentes diseñadores y desarrolladores de JS / HTML que no programan en Java.

EDITAR

3 años después, esto se ha vuelto extremadamente fácil gracias a Electron



QT es bastante extenso pero también muy grande (hinchado) y complejo. También está la biblioteca SWT que está siendo utilizada por la oficina abierta, por ejemplo. SWT usa widgets UI nativos para botones, tablas, etc. donde Swing los emula.

Sin embargo, la tendencia es claramente escribir aplicaciones de cliente enriquecido para el navegador utilizando HTML y Javascript. Ambos han avanzado mucho en los últimos años.

HTML5 apunta específicamente a las aplicaciones de cliente enriquecido con características tales como mejores formularios y bases de datos locales para admitir escenarios desconectados (tenga en cuenta que esta última característica aún no está estandarizada, pero la implementan todos los navegadores más recientes).

Javascript ahora tiene potentes bibliotecas con jQuery y sus muchos complementos. Incluso hay lenguajes como Coffeescript que se pueden usar para producir Javascript con una sintaxis más simple y poderosa.

Tampoco es necesario que dichas aplicaciones se conecten a un servidor externo. Los servidores locales de pequeña huella (p. Ej.: Embarcadero, node.js, ...) y las bases de datos (SQLite, H2, ...) se pueden instalar en el cliente para crear una aplicación completamente autónoma.


Sé que esta pregunta es antigua, pero si no quieres usar FX y aún quieres usar Swing, entonces prueba MacWidgets , lo he usado en un par de proyectos. Es muy ligero y se ve genial. A continuación se muestra un viejo proyecto en el que estaba trabajando, con el tiempo he perfeccionado el uso de macwidgets y ahora lo uso internamente en mi empresa.

http://www.digitalhand.net/projects/jdataanalyzer/mainGUI.png


También puedo ofrecerte un nuevo LaF para ver - WebLaF . Actualmente estoy trabajando en ello para traer muchas características de UI y hacer que el trabajo con Swing sea mucho más fácil para cualquiera al usar las características básicas de la biblioteca WebLaF.

Algunos ejemplos que muestran cómo se ven algunos de los componentes de WebLaF:

Algunos de los principales objetivos a los que me dirijo:

  1. L & F de gran apariencia moderna con soporte para todos los componentes Swing
  2. Un conjunto extenso de componentes adicionales que no encontrará en Swing estándar
  3. Un gran conjunto de clases de utilidad para ayudarlo a escribir el código

La biblioteca WebLaF también sugiere algunas otras ventajas y características únicas:

  1. Es un proyecto de código abierto (licencia GPLv3)
  2. Fácil diseño de componentes usando el sistema de pintores (específicamente con archivos de 9 parches)
  3. Personalización rápida y sencilla del estilo "web" predeterminado
  4. Muchas funciones para acelerar y simplificar la creación de la interfaz de la aplicación Swing

Puede probar la demo-app para ver si es lo suficientemente moderna y sencilla :)