Una de las ventajas que tiene Java respecto a otros sistemas es la capacidad de adaptarse a los diferentes sistemas operativos, y de adaptarse a las diferentes interfaces usando Swing, aunque si bien es cierto que la aplicación funciona, no lo hace todo lo «bonito» que queremos, al menos eso me ocurrió a mí, sin embargo sí que podemos conseguir una aplicación que «de el pego» haciendo lo siguiente:
- Detectar qué sistema operativo estamos ejecutando.
- Aplicar el tema correspondiente a nuestra aplicación.
Lo que en código se traduce a:
String os = System.getProperty("os.name").toLowerCase(); String name = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; if (os.indexOf("win") >= 0) { try { UIManager.setLookAndFeel(name); } catch (Exception e) {} }
Lo que hemos hecho ha sido, obtener el identificador del sistema operativo y transformarlo a minúsculas:
String os = System.getProperty("os.name").toLowerCase();
Una vez hecho esto, lo comparamos con el identificador deseado (en este caso, «win»):
if (os.indexOf("win") >= 0) {}
Finalmente, en caso de ser correcto, aplicamos el tema del sistema:
try { UIManager.setLookAndFeel(name); } catch (Exception e) {}
Es importante destacar que esta última sentencia ha de ir rodeada por un try … catch, ya que en caso contrario el compilador nos devolverá un error.
Espero que os haya sido tan útil o más de lo que me fue encontrar esto en su momento
Para más información: Documentación de Java (en inglés)