2009-10-19 4 views
11

Ist es möglich, Java zu verwenden, um Anwendungen zu erstellen, die unter Windows nativ aussehen? Es ist mir egal, ob die Lösung portabel ist oder nicht, weil ich nur Windows-Nutzer ansprechen möchte. Ich benutze Scala, wenn das wichtig ist.Java-Anwendungen auf Windows nativ aussehen lassen - wie?

Sorry für den Mangel an Details, aber ich habe noch nie zuvor Java verwendet, so dass ich nicht einmal sicher bin, ob dies möglich ist.

+2

Entwickeln Sie sie in .NET? Entschuldigung konnte nicht widerstehen. ;) – dkackman

+1

Ich stimme zu, dass native Kontrollen wichtig sind.Jede erfolgreiche Mainstream-App hat native Steuerelemente verwendet. Sie haben zwei Möglichkeiten (1) Verwenden Sie ein Widget wie Swing, das versucht, einen nativen Look zu fälschen. Das funktioniert nie ganz, manchmal ist es völlig schrecklich. (2) Verwenden Sie ein Widget-Set wie SWT, das ein Java-Wrapper um (meist) native Widgets ist. Das funktioniert perfekt. Das Fehlen eines Pakets wie SWT in der Kerndistribution ist das, was Java auf dem Client verurteilte. (Ja, Java ist ein großer Erfolg auf dem Server und einigen Unternehmens-Desktops, die ich kenne.) – DigitalRoss

Antwort

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) { 
} 

Das sollte das Look and Feel auf das System aussehen und fühlen. Sie würden dies vor jedem GUI-Code tun. Zum Beispiel in Ihrer main Methode.

Wenn Sie mehr über Look and Feels erfahren möchten, würde ich die Java Tutorial on them, as suggested by carwash überprüfen.

+0

Impliziert in dieser Antwort ist * Swing für Steuerelemente verwenden *. Dies ist die konventionelle Java-Weisheit und das offizielle Sun-Paket, und niemand kann dafür verantwortlich gemacht werden, es zu beraten. Sie werden jedoch keine nativen Steuerelemente erhalten und die gefälschten werden niemanden täuschen. Sun hätte SWT akzeptieren sollen, wenn Eclipse es ihnen kostenlos angeboten hat. Wie es ist, bietet Sun nur Widgets (Swing und AWT), die nicht für Desktop-Client-Anwendungen geeignet sind, und als Ergebnis haben sie fast keine und scheinen Swing etwas abgeworfen zu haben, anstatt es hinken zu lassen. – DigitalRoss

+1

Ich benutze Swing und ich bin "getäuscht von den gefälschten" Kontrollen. Erklären Sie, wie Swing nicht wie Windows aussieht und sich verhält, wenn Sie diesen Code verwenden. –

+0

Es saugt auf Macs, ziemlich schlecht, in der Tat. – AlBlue

0

Ja, Java verfügt über ein Windows-natives Aussehen und Verhalten unter Windows. Schauen Sie nach, wie Sie Ihr Look-and-Feel ändern können, und das sollte Sie in die richtige Richtung führen.

0

Sie würden so etwas wie: (. Was natürlich funktioniert nur unter Windows)

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

Das Ergebnis sieht und fühlt sich recht heimisch. Weitere Informationen z.B. here.

+0

Dies funktioniert nur unter Windows. Wenn Sie sich auf einem anderen System befinden, wird eine 'UnsupportedLookAndFeelException' ausgelöst. –

+0

Beachten Sie, dass OP sagte "Ich plane nur Windows-Benutzer zu zielen". Und ja, ich habe den Try-Catch weggelassen, um mich auf den Hauptpunkt zu konzentrieren. (Es ist eine geprüfte Ausnahme, also würde Compiler jemanden erinnern, der es vom echten Code vergaß :) – Jonik

2

Sie haben Windows-Look verwenden und fühlen.

Sie können es in der Befehlszeile angeben:

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

Oder in Code

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

Hier sind die Details: How to set the look and feel

9

Jeden sonst hat Swing Sachen gepostet, also werde ich Pla y Teufels Anwalt und Erwähnung SWT.

SWT ist ein Widget Toolkit, das von der Eclipse Foundation entwickelt wurde. Es ist ein dünner Wrapper über die native GUI des Systems ... für Windows, OSX und verschiedene Varianten von * nix (Linux, AIX, BSDs ?, etc ...).

Dies ist die entgegengesetzte Route, die Sun JFC/Swing nahm, die ihre eigenen Komponenten zeichnet.

+0

Ich bin neugierig, was der Vorteil der Verwendung von SWT über Swing ist, außerhalb von Eclipse RCP Entwicklung. Ich glaube, dass die meisten Betriebssysteme von UIManager.getSystemLookAndFeelClassName() abgedeckt werden. Warum sollte ich also eine externe Bibliothek für diesen Zweck einbinden? –

+3

Ich habe nicht viel Desktop-App-Entwicklung gemacht, aber der Hauptvorteil ist, dass es die native Rendering-Bibliothek des OS verwendet, anstatt eigene Komponenten wie Swing zu zeichnen. – Powerlord

+2

Gute hohe SWT vs Swing hier: http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm – Smalltown2k

2

Es ist seltsam, dass noch niemand JGoodies erwähnt hat.

Das JGoodies Windows-Look & Gefühl konzentriert sich auf einer präzise Emulation unter Windows 95/98/NT/ME/2000 in den folgenden Bereichen: Menüs, Symbole, Farben, Ränder, Schriftarten, Schriftgrößen, Einfügungen und Widget Maße. Es berücksichtigt die Bildschirmauflösung (96 dpi vs. 120 dpi), um Größen, Einsätze und Widget-Abmessungen anzupassen. (Source)

Verwandte Themen