2009-06-29 39 views
8

Hai mai provato a utilizzare Swing solo per finire a cambiare corso perché semplicemente non poteva fare ciò che volevi?GUI Java Swing su Mac OS X

Sono abbastanza nuovo di Swing, l'ho usato solo per progetti scolastici oltre 5 anni fa, ma sembra che Swing abbia fatto molto per fornire un aspetto più nativo, tanto che sto considerando utilizzandolo per sviluppare la GUI di un'app su Mac OS X. Prima però, volevo vedere se qualcuno ha incontrato problemi di showstopper che impedivano loro di utilizzare Swing.

Appena fuori dalla parte superiore della mia testa, alcune possibilità:

  • Problemi in via di sviluppo di componenti personalizzati che sembravano
  • Bad interazioni con le applicazioni native e widget
  • Problemi di prestazioni "giusto" (assenza di reazione, riverniciare problemi)
  • incapacità di imitare comportamenti nativi (come l'interazione Dock)
+1

@alanlcode: Non chiamerei questi showstoppers ma quando vuoi supportare OS X 10.4,5 e 6 e Mac a 32 bit che non hanno Java 6 e hanno bisogno di cose come l'aspetto * sortable * JTable, è un *molto lavoro. Poi c'è il problema del piggyness della memoria e dei problemi di lentezza, GC che sembra richiedere più tempo su OS X che su altre piattaforme, ecc. Ho preso in considerazione il passaggio ma avere lo stesso codice sorgente per Windows, OS X e Linux è sufficiente per continuare a usare Swing/Java :) Inoltre, ho pensato di fare più Obj-C ma andare su XCode o qualsiasi altra cosa da IntelliJ IDEA sarebbe come tornare all'età della pietra! – SyntaxT3rr0r

risposta

8

swing non sta per darvi perfetta fedeltà con il sistema operativo di hosting. Sun semplicemente non può dedicare le considerevoli risorse necessarie per farlo. La mia impressione è che Swing sia migliorato molto, ma per impostazione predefinita continuerà a sembrare fuori posto.

Il minimo richiesto per sperare ancora di passare come un app Mac:

pacchetto
  • tuo .jar in un .app
  • impostare la L & F al sistema predefinito
  • set apple.laf. useScreenMenuBar proprietà su true
    • deve fare questo prima di qualsiasi codice di interfaccia utente

L'interazione del dock è inesistente in Java standard. Dovrai utilizzare il bridge Cocoa-Java di Apple, che non è più supportato. Non ho idea di quanto sia rintracciabile JNI su OS X, che è l'unica vera alternativa.

Le prestazioni non dovrebbero essere un problema. Trascina & L'eliminazione è probabilmente folle su OS X in quanto è ovunque.

Fondamentalmente, se stai mirando esplicitamente a OS X, ti conviene usare Objective-C. È tutt'altro che impossibile costruire un'app su OS X usando Java & Swing, ma è molto lavoro per farlo sembrare "nativo".

+0

Grazie per le idee. Il mio impulso originale per provare Java su Mac è stato quello di essere in grado di acquisire un'esperienza reale usando Clojure, che sembra un linguaggio interessante. Ho deciso di utilizzare Objective-C per questa GUI e forse affrontare Clojure su qualcosa di non grafico. – alanlcode

4

@ Kevin ++

Utilizzando il cacao è probabilmente meglio

  • Se si desidera guardare esattamente come applicazioni native
  • Se ci si rivolge solo il Mac

Se si intende distribuire le tue applicazioni per Windows, Linux, ecc. Swing è una scelta decente. È meglio, ma come in ogni toolkit ci sono ancora problemi. Non avrai mai un aspetto veramente nativo con esso, lo stesso vale per toolkit UI simili che pretendono di essere "multipiattaforma".

Le linee guida Apple per lo sviluppo Java sono disponibili here.

6

Come Kevin e John hanno detto che dovresti provare Objective-C, Cocoa e XCode se hai come target solo gli utenti Mac. Il developer tools per Mac è disponibile gratuitamente.

Se si vuole (o deve) usare Java e Swing è possibile utilizzare alcune librerie per creare una GUI che guarda bene su Mac:

Per distribuendo l'applicazione dovresti leggere i documenti JarBundler.

Tuttavia, in questo caso l'interazione con dock e applicazioni native è molto limitata.

Alcuni altri link buone sono: