Java >> Java opplæring >  >> Tag >> Swing

Hvilken(e) svingoppsett anbefaler du?

MiGLayout, uten tvil. Ærlig talt, det er den eneste Swing-layoutsjefen jeg vet om som gir noen mening.

Bare det faktum at det er 8 layout-administratorer i kjerne-JDK er et godt tegn på at Swing-skaperne absolutt ikke hadde noen anelse om hva de prøvde å gjøre. Dette er ikke for å kaste resten av Swing - det er et godt GUI-verktøysett, bortsett fra layoutadministratorene.


Alle i kombinasjon. Det er hele poenget. Hver layoutmanager oppfyller forskjellige krav, og ved å bygge paneler med forskjellige layoutmanagere kan du oppnå nesten hva som helst.

"Gjør alt i et enkelt panel"-layoutadministratorer som GridBagLayout og GroupLayout (og mange tredjeparts) har sin plass, hovedsakelig når du trenger komponenter i forskjellige deler av oppsettet for å justere, men med en stor layout resulterer de vanligvis i et stort, vanskelig å håndtere rot.


Det avhenger av hva slags GUI du lager. Du kan bruke bare ett eller to av de enkle oppsettene, eller du må kanskje strekke deg etter en mer avansert layout. Min generelle bruk av layoutadministratorer vil sannsynligvis bryte ned til noe sånt som dette, selv om det vil variere basert på prosjektet:

  • 65 % GridBagLayout – det ene oppsettet som vil få det til, uansett hva du trenger å gjøre.
  • 15 % Box/BoxLayout – Flott for raskt og enkelt å feste et par komponenter sammen.
  • 12 % BorderLayout – Bra for å feste et knappepanel eller infopanel til et innholdspanel. Jeg bruker det nesten alltid til å legge til innhold i en JFrame.
  • 3 % FlowLayout – Nyttig for knappepaneler, men ikke mye annet.
  • 3 % CardLayout – Mest nyttig i programmer som viser forskjellige innholdspaneler for forskjellige driftsmoduser.
  • 2 % Andre layouter – Det er svært sjelden jeg trenger noe annet, men noen ganger kommer en av de andre layoutene til nytte.

Når du først har fått taket på GridBagLayout, er det ikke så ille å skrive til å begynne med, men det er fortsatt ikke pent å jobbe med, eller å feilsøke senere. Jeg prøvde MiGLayout for noe nylig og var skuffet over å finne ut at MiGLayout faktisk endte opp med å bli mer komplisert å bruke enn GridBagLayout i det aktuelle tilfellet.

Noen prøver å unngå GridBagLayout som pesten; men sannheten er at det er noen ting som ingen kombinasjon av enkle oppsett vil være i stand til å håndtere. Det er greit å dele et GUI i paneler for forskjellige logiske seksjoner, men jeg tror at hvis du lager en hel haug med unødvendige ekstra nestede paneler bare for å plassere komponenter, må du helt klart lære deg hvordan du bruker en GridBagLayout (eller andre lignende avansert layout, som MiGLayout). Du kan få GUI-en din til å se ok ut med et ekkelt rot av nestede BorderLayouts og GridLayouts og BoxLayouts, men så snart noen begynner å endre størrelsen på programvinduene og dialogboksene dine til å være enten mindre eller større enn du opprinnelig designet dem, vil din GUI sannsynligvis se fryktelig ut og kundene dine vil begynne å danne seg en negativ mening om produktet ditt siden du ikke kunne få en så enkel ting riktig.

Oppdatering:Jeg har brukt WindowBuilder i Eclipse en stund nå, og det forenkler arbeidet med mange oppsett, spesielt GridBagLayout. Jeg pleide å bruke mye tid på å skrive layouter for hånd, men med WindowBuilder eller sannsynligvis en lignende avansert visuell editor, kan du lage layoutene på mye kortere tid.


Java Tag