2009-10-19 11 views
11

¿Es posible usar Java para crear aplicaciones que parecen nativas en Windows? No me importa si la solución es portátil o no, porque solo planifico apuntar a usuarios de Windows. Estoy usando Scala si eso importa.Hacer que las aplicaciones Java parezcan nativas en Windows, ¿cómo?

Disculpe por la falta de detalles, pero nunca he usado Java antes, así que ni siquiera estoy seguro de si esto es posible.

+2

¿Desarrollarlos en .NET? Lo siento no pude resistir. ;) – dkackman

+1

Acepto que los controles nativos son importantes.Cada aplicación principal exitosa ha utilizado controles nativos. Tiene dos opciones (1) utilizar un conjunto de widgets como Swing que intenta falsificar un aspecto nativo. Esto nunca funciona completamente, a veces es completamente horrible. (2) utilice un conjunto de widgets como SWT que es un envoltorio de Java alrededor de (principalmente) widgets nativos. Esto funciona perfectamente La falta de un paquete como SWT en la distribución central es lo que condenó a Java en el cliente. (Sí, Java es un gran éxito en el servidor y en algunos escritorios empresariales, lo sé). – DigitalRoss

Respuesta

23
try { 
    // Set the Look and Feel of the application to the operating 
    // system's look and feel. 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
} 
catch (ClassNotFoundException e) { 
} 
catch (InstantiationException e) { 
} 
catch (IllegalAccessException e) { 
} 
catch (UnsupportedLookAndFeelException e) { 
} 

Esto debería establecer el aspecto y la sensación del sistema. Haría esto antes de cualquiera de su código GUI. Por ejemplo, en su método main.

Si quieres saber más sobre Look and Feels, echa un vistazo al Java Tutorial on them, as suggested by carwash.

+0

Implícito en esta respuesta es * use Swing para controles *. Esta es la sabiduría convencional de Java y el paquete oficial de Sun, y no se puede culpar a nadie por aconsejarlo. Sin embargo, no obtendrás controles nativos y los falsificados no engañarán a nadie. Sun debería haber aceptado SWT cuando Eclipse se lo ofreció de forma gratuita. Tal como están las cosas, Sun solo ofrece widgets (Swing y AWT) que no son adecuados para aplicaciones de cliente de escritorio, y como resultado no tienen casi ninguno y parecen haber dejado caer a Swing de una forma distinta a la de mantenerlo cojeando. – DigitalRoss

+1

Uso Swing y me "engañan los controles falsificados". Explique cómo Swing no se ve y actúa como Windows si usa este código. –

+0

Apesta a Mac, bastante mal, de hecho. – AlBlue

0

Sí, Java tiene un aspecto nativo de Windows y está disponible en Windows. Busque cómo cambiar su aspecto y lo que debería llevarlo en la dirección correcta.

0

Se podría hacer algo como: (. Lo que por supuesto sólo funciona en Windows)

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

El resultado se ve y se siente razonablemente nativa. Más información, por ej. here.

+0

Esto solo funcionaría en Windows. Si estuviera en un sistema diferente, se lanzaría una 'UnsupportedLookAndFeelException'. –

+0

Tenga en cuenta que OP dijo "Solo planeo apuntar a usuarios de Windows". Y sí, omití el try-catch para centrarme en el punto principal. (Es una excepción comprobada para que el compilador recuerde a cualquiera que lo haya olvidado del código real :) – Jonik

2

usted tiene que utilizar aspecto de Windows y sentir.

Puede especificar que en la línea de comandos:

java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp 

o en el código

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

Aquí están los detalles: How to set the look and feel

9

Todo el mundo else ha publicado cosas de Swing, así que voy a pla y Defensor del diablo y mención SWT.

SWT es un kit de herramientas de widgets producido por la fundación Eclipse. Es una envoltura delgada sobre la GUI nativa del sistema ... para Windows, OSX y varios sabores de * nix (Linux, AIX, BSDs, etc ...).

Esta es la ruta opuesta que tomó JFC/Swing de Sun, que dibuja sus propios componentes.

+0

Tengo curiosidad sobre la ventaja de usar SWT sobre Swing, fuera del desarrollo de Eclipse RCP. Creo que la mayoría de los sistemas operativos están cubiertos por UIManager.getSystemLookAndFeelClassName(), entonces ¿por qué querría traer una biblioteca externa para este propósito? –

+3

No he desarrollado mucho el desarrollo de aplicaciones de escritorio, pero la principal ventaja es que usa la biblioteca de representación nativa del sistema operativo en lugar de dibujar sus propios componentes como lo hace Swing. – Powerlord

+2

Buena SWT de alto nivel frente a Swing aquí: http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Bibraries.htm – Smalltown2k

2

Es extraño que nadie haya mencionado JGoodies todavía.

La mirada & sensación JGoodies de Windows se centra en una emulación precisa en Windows 95/98/NT/ME/2000 en las siguientes áreas: menús, iconos, colores, bordes, fuentes, tamaños de fuente, inserciones, y widgets dimensiones. Hace honor a la resolución de la pantalla (96 ppp frente a 120 ppp) para ajustar las dimensiones de los tamaños, las inserciones y los widgets. (Source)

Cuestiones relacionadas