¿Podemos desarrollar una interfaz de usuario muy atractiva en swing y si no cuáles son las alternativas


En mi proyecto actual tenemos que desarrollar una buena aplicación de escritorio basada en java.

Actualmente, tenemos una aplicación de escritorio muy básica escrita en swing y el equipo no tiene un buen conocimiento de swing. ¿Podemos crear una interfaz de usuario muy atractiva en swing?

¿Deberíamos usar JavaFX para crear la aplicación de escritorio?

¿Cuáles son otras alternativas para hacer esto?

Author: Michael Berry, 2010-05-28

6 answers

Swing es muy flexible con respecto a la apariencia y la sensación y sin duda puede hacer muy buenas aplicaciones con Swing.

Recomiendo el libro Filthy Rich Clients de Chet Haase y Romain Guy si quieres aprender a hacer buenas aplicaciones GUI Swing.

 25
Author: Jesper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-28 06:48:37

Echa un vistazo http://www.pushing-pixels.org / . Kirill es el autor de Substance que proporciona un montón de nuevas opciones de apariencia para Swing. Aquí's una entrada de blog que muestra un poco de lo que es posible con Swing. Solía haber un enlace a su presentación de 2007 en Java One, pero desafortunadamente el enlace ya no funciona.

 9
Author: Hermann Hans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-28 07:06:05

Puedes hacer que se vea como quieras. Especialmente si escribes tu propio aspecto. Lo he hecho yo mismo con paneles semitransparentes y botones simplistas.

Echa un vistazo a las capturas de pantalla en:

Http://www.taranfx.com/best-java-swing-look-and-feel-themes-professional-casual-top-10

Nimbus es una nueva apariencia que está ganando popularidad, y se ve muy profesional imo:

introduzca la descripción de la imagen aquí

 8
Author: aioobe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-14 09:24:44

Ciertamente puede crear una interfaz de usuario de gran apariencia en Swing - aplicaciones como NetBeans y IntelliJ IDEA han demostrado esto entre muchos otros.

La única alternativa que tiene Swing es SWT(Eclipses toolkit), sin embargo no es portátil como Swing y tampoco tan flexible. Ofrece, sin embargo, un rendimiento más rápido y el uso de componentes nativos, que podría ser lo que algunas personas realmente quieren.

Hay enlaces Java para la mayoría de los conjuntos de herramientas GUI existentes como bueno-por ejemplo Java para Gnome y alguien podría encontrarlos interesantes.

Sin embargo, estoy a favor de la portabilidad extrema de Swing, la adopción de MVC, el aspecto y las sensaciones conectables, la disponibilidad de muchas bibliotecas de terceros con componentes adicionales ( SwingX, JIDE , ...) y facilidad de uso.

Por cierto, para obtener resultados óptimos en el Swing, elegir un buen administrador de diseño es esencial; le recomiendo que eche un vistazo al todopoderoso Mig layout.

 5
Author: Bozhidar Batsov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-28 06:57:07

No toque JavaFX 1 con un bichero.

JavaFX 2 sin embargo se ve muy prometedor, con Oracle diciendo que van a integrar estrechamente a Java 8. Tiene una API muy agradable detrás de él, se acelera gráficamente, se puede skin bastante como te plazca usando CSS3 y por defecto se ve bastante bien también.

La única advertencia es que aún no está disponible para Linux , pero si está buscando desarrollar una aplicación que se lanzará en el próximo par de años más o menos, o no está demasiado preocupado por esperar soporte multiplataforma, es una buena opción a considerar.

 2
Author: Michael Berry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-02 17:06:02

De tu respuesta no está muy claro cuál es tu problema. Una solución simple, pero a menudo suficiente es cambiar la apariencia de su aplicación a la apariencia predeterminada del sistema (por lo que Swing se ve como una aplicación nativa). Todo lo que necesita hacer es insertar el siguiente código en algún lugar antes de que se cree/muestre cualquiera de su interfaz de usuario (si no sabe dónde, colóquelo como el primero en su método principal):

try {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
// exit application, log  or ignore exception
}
 1
Author: Durandal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-05-28 09:36:12