2010-04-11 14 views
18

Grazie per le vostre risposte a my previous question about GUI in java. Ora mi chiedo quali siano le soluzioni scelte dai professionisti per ottenere una bella GUI, per applicazioni "reali". Usi swing e JComponents e cambi semplicemente "l'aspetto grafico"? Preferisci awt o un'altra libreria?In che modo i "professionisti" creano una GUI in java?

Scusate se questa domanda suona strano, io sono uno studente e io non so davvero come Java è utilizzato nel mondo reale ...

+2

@Jules Olléon: Dispongo di software commerciale scritto in Java che funziona su Windows, OS X e Linux. Io uso l'editor GUI di Swing e IntelliJ (che è ottimo in quanto nasconde automaticamente un sacco di inutili codeplate inutili codice Swing da te) e alcuni componenti personalizzati (questi funzionano al 100% lo stesso su ogni singola piattaforma). Come una barra di avanzamento dual/tri/quad personalizzata, un elenco personalizzato "trova-come-tu-tipo" (come quello che Google sta utilizzando per i suggerimenti) e alcuni componenti personalizzati più avanzati specifici per il mio dominio problematico. – SyntaxT3rr0r

+0

@WizardOfOdds: Cosa LaF stai usando su Windows e Linux? Stai utilizzando lo stile Windows e GTK o lo standard Swing? – Jonas

+0

@Jonas: su Windows offriamo ai nostri utenti la scelta tra il layout Swing predefinito e Nimbus. Su Linux è lo Swing predefinito, qualunque cosa accada: ma ci sono un sacco * di problemi (comprese molte domande qui su SO). Ad esempio abbiamo "schede chiudibili" e noi * dobbiamo * correre sotto 1,5. Quindi abbiamo il nostro riproduttore per schede ecc. È un mondo * selvaggio * di incompatibilità là fuori :) Il software * funziona * su Linux e noi sviluppatori lo sviluppiamo e testiamo su Linux, ma stiamo vendendo solo su OS X e Windows :) – SyntaxT3rr0r

risposta

9

Nella nostra azienda utilizziamo lo Swing, poiché questo è supportato dalla JVM, ma utilizziamo colori di sfondo con codice colore per alcuni pannelli e pulsanti.

Se usassimo qualcosa di diverso, come SWT o Jambi, dovremmo anche implementare questi framework per tutte le piattaforme e testare tali framework per tutti i sistemi operativi e le versioni java (supportate). Non è affatto carino.

È comunque abbastanza complicato creare una bella applicazione reattiva con Swing; quindi hai davvero bisogno di usare SwingWorker e simili. Con un po 'di esperienza tuttavia puoi creare una bella applicazione in questo modo.

E anche se non è il framework più veloce da sviluppare, il tempo di sviluppo è davvero piccolo rispetto alla definizione dei requisiti funzionali dell'interfaccia utente, e test e supporto quando la versione viene rilasciata.

Detto questo, il nostro obiettivo sono i desktop. Se scegli come target i dispositivi mobili o hai bisogno di un frontend web, le tue scelte potrebbero variare.

4

Io non credo a nessuno preferisce più AWT. Swing l'ha soppiantato completamente undici anni fa, costruendovi sopra per correggere i difetti nel design AWT 1.0.

L'oscillazione non è l'unico modo in cui i professionisti creano interfacce utente Java. Funziona per i desktop, ma ora c'è anche JavaFX. Per il web, le interfacce utente sono costruite usando HTML, CSS, JavaScript e JSP.

+2

Per amore di Dio, ti preghiamo di non utilizzare AWT! Lo sviluppo di un'app Web presenta numerosi vantaggi, non ultimo l'implementazione più semplice. – Stephen

+0

@Stephen Le GUI e le app Web AWT sono completamente diverse. Dipende da cosa stai cercando di fare. Swing ha comunque un vantaggio rispetto ad AWT, sebbene il pacchetto AWT sia ancora utilizzato per la gestione degli eventi. – aduric

+0

@aduric, non intendevo presentarli come gli stessi. Stavo semplicemente affermando due cose 1) awt GUI succhiare, e 2) una web-app ha numerosi vantaggi. Tuttavia, le GUI e le app web non sono completamente diverse, in genere puoi fare la maggior parte di ciò che vorresti fare localmente in un'app web. – Stephen

1

mia esperienza è che la maggior parte delle organizzazioni che vogliono creare GUI ricche usano ancora swing, e manualmente passare attraverso tutti i fastidi di gestori di layout, ecc

L'uso di SWT è piuttosto limitata a organizzazioni che utilizzano il Eclipse RCP come piattaforma. Non sono sicuro del motivo per cui non è stato preso al di fuori di questa piattaforma.

È triste ammetterlo, ma le GUI di Java Swing in generale non sembrano buone a meno che non si passi un sacco di tempo a creare un'atmosfera più nativa per loro. Anche in questo caso, spesso perdono l'estetica in programmi equivalenti scritti appositamente per Windows e che utilizzano API Window come WinForms.

+0

Dovresti provare la finestra di progettazione della GUI in Netbeans! –

+0

Avere UIManager imposta l'aspetto alla classe di sistema va bene per Windows. Tutto sembra quasi uguale a quello di un'applicazione nativa di Windows. Ci sono alcune piccole differenze qua e là (principalmente nei componenti AWT) ma Swing fa un buon lavoro di emulazione del look nativo. – bgroenks

0

Macintosh OS X crea il proprio runtime Java. Offrono ai componenti Swing lo stesso aspetto e aspetto delle applicazioni native.

Io uso strettamente Swing. Distribuisco applicazioni desktop "reali" tramite Web Start per Mac e Windows che si interfacciano con il lettore di smart card dell'utente.

L'IDE NetBeans offre un modo WYSIWYG per creare i moduli. L'ho provato ed è abbastanza pulito, ma utilizziamo ancora Eclipse come IDE e progettiamo i moduli nel codice.

+1

L'editor WYSIWYG NetBeans è un incubo. Se puoi permetterti, ti consiglio JFormDesigner, o fallo semplicemente a mano con un gestore di layout. All'inizio potrebbe essere più un lavoro, ma a lungo termine hai più controllo. – cdmckay

+0

Siamo spiacenti, non lo è. Hai il pieno controllo di ciò che va dove e di tutte le proprietà e legature e quant'altro. Devi solo sapere dove guardare. Btw .: per quanto ne so, MacOSX rende * AWT * simile a macos aqua, non swing. – Tedil

+0

Nightmare ... Perché? –

1

Usiamo tipicamente swing becuse è supportato in JRE standard, su la scatola. Normalmente eseguiamo il design iniziale della maschera e l'hookup degli eventi in Netbeans e quindi lo esportiamo in qualsiasi cosa desideriamo, ad esempio Eclipse.

Netbeans sputa Java puro utilizzando le librerie standard (più un jar o due che è necessario includere) quindi non è un grosso problema progettare il modulo in Netbeans e in seguito passare a qualcos'altro.

Alcune persone hanno suggerito di eseguire manualmente il layout del modulo utilizzando un gestore di layout. Lo vedo come un'opzione solo se stai facendo qualcosa di grosso e molto ben preventivato che deve essere mantenuto all'infinito. Altrimenti è troppo tempo per valerne la pena.

1

Ci affidiamo a SWT per le nostre GUI Java. Sì, devi includere una libreria nativa esterna, ma l'aspetto grafico è nativo, più reattivo (sebbene Swing sia diventato molto più veloce negli ultimi anni) e perfettamente compatibile con altre app sulla piattaforma di destinazione.

Problemi correlati