2009-02-12 10 views
10

Sono relativamente nuovo a java (in particolare swing) e recentemente ho fatto alcune applicazioni abbastanza semplici, imparando mentre andavo. L'ultimo ha molti componenti del modulo come JLabels, JTextFields, JButtons, ecc. Ecc. Tutti sono stati collocati in NetBeans usando un visual builder. Devo dire che non sto prendendo in considerazione NetBeans e sto solo progettando la GUI e copiando il codice direttamente su Eclipse.GroupLayout: vale la pena imparare?

La mia domanda è: vale la pena ottenere una buona comprensione di GroupLayout e codifica a mano (e quindi avere un maggiore controllo sulla GUI) o semplicemente continuare così com'è?

risposta

11

Direi che vale la pena dedicare un po 'di tempo a capire GroupLayout se non altro perché è sempre una buona idea capire cosa sta facendo il tuo IDE. Sapere cosa succede dietro le quinte ti rende effettivamente più flessibile, perché se finisci in una situazione in cui non hai accesso a Netbeans, saprai come replicare il layout che avrebbe prodotto per te. Inoltre, dopo aver ottenuto una discreta quantità di esperienza, probabilmente finirai per risparmiare tempo complessivo. Spesso è possibile sviluppare una semplice GUI più velocemente a mano che utilizzando un editor visuale, soprattutto considerando il tempo necessario per copiare e incollare il codice da Netbeans a Eclipse.

E, naturalmente, imparare a usare GroupLayout a mano renderà anche più facile la transizione a qualsiasi altro gestore di layout offerte Java, che a sua volta può portare a un codice più semplice e ancora più tempo risparmiato.

+0

Ci sto pensando anche io; Potrei trovarmi in una situazione in cui non ho la comodità di copiare codice da NetBeans ma dove ho bisogno di creare una GUI relativamente complessa - e nei casi in cui ho bisogno di creare una GUI più semplice, non ho bisogno di passare a NetBeans piuttosto costruirlo su un semplice gestore di layout. – Ciaran

10

GroupLayout non è stato progettato per la codifica manuale; è molto, molto più dettagliato di qualsiasi altro gestore di layout (tranne forse GridBagLayout). Dato che dici di essere nuovo a Swing, suggerisco di iniziare con i gestori di layout di base (BorderLayout e FlowLayout); è possibile utilizzarli in NetBeans facendo clic con il pulsante destro del mouse sul pannello o frame e scegliendo "Imposta layout". Dopo aver familiarizzato con quelli, ti suggerisco di dare un'occhiata a MiGLayout.

Per rispondere alla tua altra domanda: Penso che il progettista di moduli NetBeans sia simile a un calcolatore; è uno strumento meraviglioso se conosci già le basi, ma non imparerai mai nulla se lo usi come una stampella.

+0

Penso che SpringLayout sia ancora più prolisso. ;) Ho usato il GroupLayout che viene fornito con LWUIT e non era male, ma non è neanche facile. Mi è piaciuto JGoodies FormLayout e poiché MiG Layout è il suo successore, raccomando caldamente MiG. Ad ogni modo, è bene sapere anche i layout di base. –

+0

Ho già familiarità con BorderLayout, ma praticamente GroupLayout è quello che ritengo sia il migliore per l'applicazione che sto attualmente sviluppando. Per quanto riguarda l'uso di NetBeans come stampella - semplicemente non mi piace l'IDE e lo trovo inutilmente complicato in alcune parti – Ciaran

1

La maggior parte dei gestori di layout più complessi non sono pensati per essere codificati a mano. Puoi farlo, ma probabilmente avrai problemi a capire il tuo layout tra qualche mese. GroupLayout non fa eccezione, peggio non è affatto intuitivo, devi contorcere la tua mente forzando il tuo layout in termini di GroupLayout.

È mia opinione che questi gestori di layout non valgano la pena di essere appresi. GridBagLayout è il peggiore di tutti. Ha più opzioni di quante tu possa immaginare, e non sembrano mai fare ciò che pensi che facciano. MiGLayout è molto potente, ragionevolmente intuitivo, e per lo più fa quello che pensi che faccia, ma continuerò a sostenere che è troppo potente e troppo complicato per il suo, e il bene del programmatore. GroupLayout non è così potente, non intuitivo e non vale la pena.

Il mio consiglio da anni di tracciare GUI Java e mantenerli è quello di imparare e utilizzare il gestore di layout più potente che si può padroneggiare in due ore e che non dimenticherò mai, quindi impaginare la GUI con contenitori nidificati usando questo layout gestore e il BorderLayout/GridLayout/FlowLayout/BoxLayout di base.

+2

http://madbean.com/anim/totallygridbag/ –

+4

-1 GroupLayout mi sembra molto intuitivo. Certo, è prolisso, ma questo è Java di cui stiamo parlando. Basta leggere la documentazione e seguire [questo esempio] (http://download.oracle.com/javase/tutorial/uiswing/layout/group.html). Dopodiché, inizia a usarlo sui progetti della GUI "vita reale". Penso che troverai che non è così brutto come sembra in un primo momento. – bcat

+2

-1 Sono d'accordo con @bcat. Vorrei anche prendere la questione diretta del parere nell'ultimo paragrafo. I migliori risultati derivano sempre da una padronanza che dura più di due ore. Non dimenticherò mai come usare 'GroupLayout' finché continuo a usarlo. Inoltre non capisco come 'GroupLayout' possa essere più complicato dell'uso di ** contenitori annidati **. Questo è come lo farei se qualcuno mi dicesse di complicarlo. –

3

GroupLayout vale la pena imparare a utilizzare a livello di programmazione.

Io uso GroupLayout come layout predefinito su quasi tutti i pannelli che creo che utilizzano componenti Swing standard. Trovo che i risultati siano sempre molto gradevoli alla vista e ridimensionati molto bene.Ho sempre impostare le seguenti opzioni:

groupLayout.setAutoCreateGaps(true); 
groupLayout.setAutoCreateContainerGaps(true); 

Utilizzando questo layout più volte, non solo ha dato a me di grande impatto visivo layout, ma mi dà l'esperienza di basso livello necessario per essere in grado di mettere insieme alcuni pannelli complicati con un numero di componenti sconosciuti al momento della compilazione. Trovo anche, quando il numero di componenti è dinamico, che posso disporre tutti i componenti e quindi accenderli e spegnerli con setVisible(boolean) senza ricreare i gruppi orizzontale e verticale.

0

Se si è inclini a uno stile di programma VB, trascorri del tempo su GroupLayouts. Altrimenti prova a capire GridBagLayout Manager con esempi adatti. È il migliore per chi vuole che ogni componente dell'interfaccia grafica sia sotto il nostro controllo a penna (dovremmo scrivere e non l'IDE). Un buon sviluppatore Java dovrebbe passare del tempo in oggetti GUI e oggetti business e deve sapere come separarli. L.Sankaranarayanan.