Suele ser importante que las aplicaciones que hagamos sean fáciles de usar. Para eso es importante que su apariencia sea familiar y se comporten como el resto de aplicaciones.
Java es un lenguaje multiplataforma y de por sí se encarga de muchas de las tareas, pero hay otras no resueltas que podemos implementar nosotros y otras que están resueltas pero hay que utilizarlas y tenerlas encuenta.
Sobre este tema hay un artículo muy bueno en inglés: Make your Swing app go native (parte 2 y parte 3).
Y a continuación voy a comentar algunos consejos adicionales.
El look & feel
Lo primero de todo que deberíamos hacer en nuestra aplicación Swing es establecer que Swing utilice el look & feel del sistema. Basta esta línea de código:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Sin embargo el look & feel para Windows antes de la versión Java SE 6 no es tan bueno como se espera. En caso de estar ejecutándolse una versión anterior a Java 6 podríamos optar por utilizar WinLaf.
También ocurre que el look & feel en Mac tampoco es tan bueno como podría serlo. Por ejemplo un JFileChooser en apariencia no tiene nada que ver con el cuadro de diáolo nativo de la interfaz Mac. Para solventar esto podemos detectar si la aplicación está funcionando en MacOS X y en ese caso cargar el look & feel Quaqua (hay una versión que sólo modifica el selector de ficheros).

Atajos de teclado
Otra cosa que deberemos tener en cuenta es que mientras en Windows/Linux se suele utilizar la tecla Control para los atajos de teclado, mientras que en MacOS X se utiliza habitualmente la tecla Comando. Por ejemplo en una opción de menú en vez de hacer lo siguiente:
JMenuItem m = new JMenuItem("Copy");
m.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK, false));Deberíamos hacer lo siguiente:
JMenuItem m = new JMenuItem("Copy");
m.setAccelerator(KeyStroke.getKeyStroke('C', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false));Este código en Windows o Linux creará una opción de menú que se activa con Control+C y el mismo código en MacOS X creará una opción de menú que se activa con Comando+C. La magia está en el método getMenuShortcutKeyMask().
Empaquetado
Podemos empaquetar nuestra aplicación en un archivo JAR ejecutable. Sin embargo esto no es una muy buena opción ya que
Para solventar esto contamos con diversas herramientas que permiten crear un ".exe" en Windows a partir de un archivo JAR. Por ejemplo launch4j. Este software tiene muchas características, entre las que destacan:
Eso en cuanto a Windows. También desearemos crear un ejecutable para MacOS X. En tal caso podemos utilizar JarBundler que permite crear un ".app" a partir de un archivo JAR. Y después podemos empaquetar ese ejecutable en un archivo DMG desde ant.
En Linux no conozco ninguna forma estándar de crear un ejecutable. Sin embargo siempre deberíamos ofrecer la posibilidad de ejecutar la aplicación a través de un archivo JAR ejecutable estándar. Así facilitaríamos la vida a algunos usuarios (Windows, Mac) y al resto no les quitaríamos ninguna facilidad.
Gimenete es un tipo al que le encanta programar y cada vez más el mundo de los negocios. Lleva media vida programando en Java, y últimamente le da bastante a Objective-C para iOS y también a Python. No le hace ascos a JavaScript y otras hierbas.
© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |