Forrige avsnitt Neste avsnitt  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:

Mellomrom av fast størrelse

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 );

Fleksible mellomrom

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().

Eksempel

Se programmet Navnevelger, der det også er eksempel på et egenprogrammert dialogvindu.

Copyright © Kjetil Grønning og Eva Hadler Vihovde, revidert 2014

Forrige avsnitt Neste avsnitt  Start på kapittel om spesialiserte komponenter for grafiske brukergrensesnitt