Qual'è il miglior layout

di il
2 risposte

Qual'è il miglior layout

Salve a tutti,
stavo dando un'occhiata in internet riguardo a swing, e facendo ricerche ho capito che esistono questi gruppi di layout:

BorderLayout, BoxLayout, CardLayout, FlowLayout, GridBagLayout, GridLayout, GroupLayout, SpringLayout,

ma nessuno parla di quale sia la più flessibile o il più usato, quindi chiedo aiuto e consigli a voi,
grazie a tutti in anticipo

2 Risposte

  • Re: Qual'è il miglior layout

    tetramix ha scritto:


    BorderLayout, BoxLayout, CardLayout, FlowLayout, GridBagLayout, GridLayout, GroupLayout, SpringLayout,

    ma nessuno parla di quale sia la più flessibile o il più usato
    BorderLayout, BoxLayout, CardLayout, FlowLayout, GridBagLayout, GridLayout sono i layout manager più semplici e "basilari" (BoxLayout è nel package javax.swing).

    GroupLayout (da Java 6) e SpringLayout (da Java 1.4), presenti in javax.swing, sono tra i layout manager più complicati, perché con un solo layout manager è possibile effettuare il layout di tutti i componenti in una finestra/dialog potendo utilizzare vincoli anche molto complessi. Ad esempio in SpringLayout si possono applicare vincoli che mettono in relazione i bordi dei componenti.

    GroupLayout e SpringLayout sono generalmente/tipicamente utilizzati dagli editor "visuali" delle interfacce grafiche negli IDE. Il codice generato dagli IDE però è spesso prolisso, fumoso e contorto.
    Giusto per darti una idea, vedi questo codice che ho trovato con una ricerca fatta al volo:
    https://netbeans.org/projects/samples/sources/samples-source-code/content/samples/java/DVDStoreAdmin-Ant/src/sakila/ui/DVDStoreAdmin.java

    Dalla riga 89 inizia la gestione con il GroupLayout e come puoi vedere è estremamente complessa, contorta e solo a guardare il codice è difficilissimo dedurre come si presenta la interfaccia utente, cioè come sono disposti i componenti.

    Le interfacce grafiche sarebbe meglio realizzarle con codice scritto a mano e in tal caso è assolutamente sconsigliabile l'uso di GroupLayout/SpringLayout.
    Io personalmente non li ho mai usati direttamente, anzi, già a solo a guardare il codice come quello linkato mi passa la voglia di leggerlo ....

    Rimangono quindi i layout manager "basilari" e ti posso garantire che almeno il 95% delle interfacce grafiche si può realizzare con questi. Ovviamente non è pensabile realizzare una interfaccia grafica complessa e sofisticata con solo es. BorderLayout o FlowLayout ... e probabilmente nemmeno con solo GridBagLayout.
    La principale "abilità" in Swing sta nel saper "inscatolare" componenti dentro contenitori, dentro eventuali altri contenitori, ecc... magari sfruttando più layout manager differenti.
    E in tutto questo può anche essere di aiuto applicare i principi della OOP, separando le parti della interfaccia in classi distinte e/o sfruttando la ereditarietà se si intravedono concetti riutilizzabili o specializzabili, ecc...

    Riguardo tutti questi aspetti di "design", anche a livello OOP, un editor "visuale" non solo non ti aiuta in questo ma probabilmente ti mette pure i classici bastoni tra le ruote, come si dice. E per quanto ne so io, è solo un motivo in più per realizzare tutto il codice per la interfaccia grafica ... a mano!
  • Re: Qual'è il miglior layout

    Grazie andbin,
    ho letto il tuo post ben 4 volte, non perché non lo avevo capito, ma per farmelo entrare in testa meglio,
    il fatto di poter inscatolare mi rende sempre più semplice da capire OOP, venendo dalla vecchia guardia dell'elettrotecnica,

    ho guardato anche i tuo esempi che hai messo nella firma è ho notato delle cose che non metto per non andare OT,
    ma che mi hanno aiutato a vedere come seguire le regole OOP

    per quanto riguarda scrivere tutto a mano, visto la spiegazione (il link), credo proprio che non ci sono dubbi
Devi accedere o registrarti per scrivere nel forum
2 risposte