![]() |
![]() |
Start på kapittel om spesialiserte komponenter for grafiske brukergrensesnitt |
BoxLayout
BoxLayout
plasserer komponentene i én rad, horisontalt
eller vertikalt. Mellom komponentene kan det legges inn tomrom, enten av fast
størrelse eller tomrom som strekker seg når vinduet gjøres større.
BoxLayout
kan settes for de swing-containere vi har vært borti
tidligere (JPanel
, samt contentPane
for subklasser
av JApplet
og JFrame
, som også er en container av
type JPanel
). Dessuten finnes det en egen
container-type
Box
.
På en slik er det ikke mulig å bruke annet
enn BoxLayout
, noe som den har som default.
For å sette BoxLayout
på en container c
skriver
vi følgende:
c.setLayout( new BoxLayout( c, retning ) );
der retning
skal være konstanten
BoxLayout.LINE_AXIS
dersom vi ønsker en horisontal rad av
komponenter, og BoxLayout.PAGE_AXIS
når vi ønsker en vertikal
rad av komponenter. (Tidligere ble det for disse konstantene brukt verdiene
BoxLayout.X_AXIS
og BoxLayout.Y_AXIS
. Nå anbefales
de nye verdiene, siden disse også gjør det mulig for programmer å tilpasse seg
språk der rekkefølgen av ordene er fra høyre mot venstre.)
Legg for øvrig merke til at den samme containeren som vi setter layout for også
skal være konstruktørparameter for BoxLayout
-objektet.
Box
-klassen inneholder noen static
-metoder som
er nyttige for å legge inn fast og fleksibelt mellomrom mellom komponentene.
Vi ser på noen eksempler på bruk av disse:
Vi ønsker 5 piksler mellom to komponenter i en horisontal komponentrad. (Vi forutsetter at de variablene som brukes er deklarert og initialisert.)
container.add( førsteKomponent );
container.add( Box.createRigidArea( new Dimension( 5, 0 ) );
container.add( andreKomponent );
Dette er mellomrom som kan variere i utstrekning fra ingenting til ingen øvre grense. Størrelsen vil avhenge av komponentenes og vinduets størrelse. For å legge inn fleksibelt mellomrom mellom to komponenter på en horisontal komponentrad, slik at overflødig mellomrom vil oppstå mellom komponentene istedenfor bak den siste, kan vi skrive slik:
container.add( førsteKomponent ); container.add( Box.createHorizontalGlue() ); container.add( andreKomponent );
Tilsvarende gjelder for fleksibelt mellomrom mellom komponenter på en
vertikal komponentrad. Forskjellen er at man der bruker
Box.createVerticalGlue()
.
Se programmet Navnevelger, der det også er eksempel på et egenprogrammert dialogvindu.
Copyright © Kjetil Grønning og Eva Hadler Vihovde, revidert 2014
![]() |
![]() |
Start på kapittel om spesialiserte komponenter for grafiske brukergrensesnitt |