Ohjelmointi

Tutustu BoxLayoutiin

Yksi Java-alustan mukana toimitetuista tavallisista ulkoasunhallinnoista on BoxLayout. Tämän avulla voit sijoittaa yhden rivin tai sarakkeen komponentteja säiliöön. Tämä saattaa kuulostaa ei niin monimutkaiselta ulkoasunhallinnalta, mutta sen avulla Laatikko ja sen liimaa ja tukia, luulisi, että se riittäisi, mutta sitä on vielä enemmän. Taustalla olevien komponenttien pystysuora ja vaakasuora suuntaus mahdollistaa entistä paremman komponenttien sijainnin hallinnan säiliössä. Tässä tarkastelemme kaikkia näitä näkökohtia.

Tyypillinen käyttö

BoxLayout on toisin kuin useimmat ulkoasunhallintaohjelmat, jotka edellyttävät vain ulkoasunhallinnan luomista ja liittämistä ulkoasunhallintaan Kontti. Sen sijaan BoxLayout konstruktori vaatii sinua läpäisemään Kontti ulkoasunhallinnan rakentajaan, jolloin niissä on viittaus kumpaankin toiseen komponenttiin. Tämä voi joskus olla hankalaa, ja se käyttää Laatikko kontti suositumpi, koska sinun tarvitsee vain pyytää vaaka- tai pystysuunnassa asetettua Laatikko yhden sen kautta staattinen menetelmät:

 Laatikon pystysuora = Box.createVerticalBox (); Laatikko vaakasuorassa = Box.createHorizontalBox ();

Molemmat käyttävät BoxLayout kannen alle asettamalla lisätyt komponentit oikeaan sisäänkäyntiin suunnasta riippuen. Pystysuuntainen laatikko sijoittaa kaiken yhteen sarakkeeseen, kun taas vaakasuora ruutu sijoittaa kaiken riviin. Vertailu BoxLayout (ja näin Laatikko) Ruudukkoasettelu vaatii nopean kommentin. Kun laitat joukon komponentteja a Ruudukkoasettelu Ohjatussa säiliössä kaikkien komponenttien odotetaan olevan samankokoisia. Kanssa BoxLayout, näin ei ole, ja komponentin suurin suositeltu koko noudatetaan.

Tuet ja liima

Box-luokka tarjoaa kahden tukikomponentin luomisen, yhden tuen tai kiinteän kokoisen täyteaineen, toisen liiman laajennettavalle alueelle. Näiden avulla voit sijoittaa komponentit säiliöön joko kiinteällä etäisyydellä toisistaan ​​tuella tai kasvavalla / kutistuvalla alueella käytettävissä olevan tilan perusteella liimalla. Sama tehtävä voidaan tehdä GridBagConstraints ja GridBagLayout, vaikkakaan ei niin helposti.

Osoitettavasti tämä ensimmäinen ohjelma luo 25 pikselin tuen kahden ylemmän osan välille ja 10 pikselin tuen kahden alemman väliin.

tuo java.awt. *; tuo javax.swing. *; public class VerticalBoxTest {public static void main (String args []) {JFrame frame = new JFrame ("Vertical Box"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); Box box = Box.createVerticalBox (); box.add (uusi painike ("Yläosa")); box.add (Box.createVerticalStrut (25)); box.add (uusi painike ("keskimmäinen")); box.add (Box.createVerticalStrut (10)); box.add (uusi painike ("alaosa")); frame.add (ruutu, BorderLayout.CENTER); frame.setSize (300, 200); frame.setVisible (true); }}

Kun käännät ja suoritat sen, huomaa, kuinka komponenttien koko muuttuu, kun ikkunan koko kasvaa tai pienenee. Komponenttien välinen etäisyys pysyy muuttumattomana, jotta se vastaa varattua tukijalkaa. Tässä esimerkissä käytetään a Painike a sijasta JPainike välttää selitys komponenttien kohdistamisesta vasta myöhemmin.

Työskentely vaakasuoran laatikon ja liiman kanssa tuottaa samanlaisia ​​tuloksia, vaikka tällä kertaa liiman koko kasvaa viemään lisätilaa sen sijaan, että se pysyisi kiinteän koon tuen kanssa.

tuo java.awt. *; tuo javax.swing. *; julkinen luokka HorizontalBoxTest {public static void main (String args []) {JFrame frame = new JFrame ("Horizontal Box"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); Laatikko-ruutu = Box.createHorizontalBox (); box.add (Box.createHorizontalGlue ()); box.add (uusi JButton ("Vasen")); box.add (uusi JButton ("Oikea")); frame.add (ruutu, BorderLayout.NORTH); ruutu = Box.createHorizontalBox (); box.add (uusi JButton ("Vasen")); box.add (Box.createHorizontalGlue ()); box.add (uusi JButton ("Oikea")); frame.add (ruutu, BorderLayout.CENTER); ruutu = Box.createHorizontalBox (); box.add (uusi JButton ("Vasen")); box.add (uusi JButton ("Oikea")); box.add (Box.createHorizontalGlue ()); frame.add (ruutu, BorderLayout.SOUTH); frame.setSize (300, 200); frame.setVisible (true); }}

Yritetään olla hämmentämättä sinua liikaa, mutta esimerkki on palannut käyttämiseen JPainike komponentit.

Kohdistus

Elämä muuttuu mielenkiintoiseksi Laatikko / laatikkoasettelu kun säiliön komponentit ovat erikokoisia tai säiliön korkeus / leveys on leveämpi kuin pystysuoraan laatikkoon vaaditaan tai korkeampi kuin vaakasuorassa. Toisin sanoen, jos sinulla on korkea sarake, mihin eri leveyden komponentit päätyvät? Ja jos sinulla on laaja rivi, jossa on eri korkeuden komponentit, entä miten?

Tässä tulee esiin komponentin eri suuntaukset. Jokaisella Swing-komponentilla on X-suuntaus asetus ja a Y-suuntaus asetus sen ansiosta get / setAlignmentX () ja get / setAlignmentY () menetelmiä. Kunkin asetuksen alue on 0 että 1.0, mukaan lukien, missä 0 edustaa vasemmalle tai ylhäältä kohdistamista ja 1 edustaa oikeaa tai alinta tasausta suunnan mukaan BoxLayout. Verkossa on vakioita Komponentti luokka, joten sinun ei tarvitse tietää, mitkä ovat oikean ja vasemman tasauksen arvot. Se auttaa kuitenkin tietämään, haluatko jotain väliin.

Osoittaakseen eri kokoisten painikkeiden oikean, vasemman ja keskimmäisen luonteen pystysuorassa ruudussa seuraava ohjelma luo kolme laatikkoa, joista kukin on täynnä vasen, keski ja oikea tasattu painike.

tuo java.awt. *; tuo javax.swing. *; public class AlignX {private static Container makeIt (String labelChar, float alignment) {Box box = Box.createVerticalBox (); for (int i = 1; i <6; i ++) {String label = makeLabel (labelChar, i * 2); JButton-painike = uusi JButton (tarra); button.setAlignmentX (tasaus); box.add (painike); } palautuslaatikko; } yksityinen staattinen String makeLabel (String s, int pituus) {StringBuffer buff = uusi StringBuffer (pituus); varten (int i = 0; i

Sekoitetaan nyt asioita vähän ja meillä on yksi pystysuora laatikko, jossa on kolme painiketta, yksi kutakin kohdistusta varten. Näytön leveys on leveä varmistaaksesi, että käytettävissä on ylimääräistä tilaa. Käsitteellisesti ajatellen voidaan odottaa, että vasemman suuntainen komponentti kohdistetaan säiliön vasemmalle puolelle ja oikean suuntainen komponentti astian oikealle puolelle. Se olisi kuitenkin väärin. Kun komponenttien kohdistuksia on erilaisia, ne kohdistetaan säiliön keskelle. Joten vasemman suuntauksen kohdalla kyseisen komponentin vasen reuna on säiliön näkymättömällä keskilinjalla. Oikea suuntaus on oikea reuna.

Tässä ohjelma osoittaa:

tuo java.awt. *; tuo javax.swing. *; public class AlignX2 {public static void main (String args []) {JFrame frame = new JFrame ("X Alignment"); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); Box box = Box.createVerticalBox (); JButton-painike = uusi JButton ("LL"); button.setAlignmentX (komponentti.LEFT_ALIGNMENT); box.add (painike); painike = uusi J-painike ("CC"); button.setAlignmentX (komponentti.CENTER_ALIGNMENT); box.add (painike); painike = uusi J-painike ("RR"); button.setAlignmentX (Component.RIGHT_ALIGNMENT); box.add (painike); frame.add (ruutu, BorderLayout.CENTER); frame.setSize (300, 200); frame.setVisible (true);}} 

Ja vahvistava näyttö:

Toisessa suunnassa työskenneltäessä ylätasaus kohdistetaan komponentin yläosa kuvitteelliseen keskiviivaan tai toisin sanoen keskipisteen alapuolelle.

Kohdistusten sekoittaminen tällä tavalla toimii hyvin, mutta vie vain jonkin verran totuttelua, koska suuntaus ei välttämättä ole siellä, missä voit odottaa sen olevan, ellei kaikki kohdistukset ole samat, ja sitten se kohdistuu kontin reunaan, toisin kuin kontin keskilinja.

Jos olet edelleen hämmentynyt, voit muokata aikaisempia ohjelmia ja kokeilla vielä enemmän niiden yhdistelmiä x ja y kohdistus. Tietenkin, jos kaikki tämä hämmentää sinua, on aina GridBagLayout.

******

SDN Chat: Tapaa java.sun.comin kirjoittajia

Liity mukaan Sunin kehittäjien leikkikentälle Second Life torstaina, 14. helmikuuta klo 10 PST tavata java.sun.comin kirjoittajia. Ed Ort, Dana Nourie, Janice Heiss ja Laureen Hudson tulevat olemaan maailman keskustelemaan seikkailuistaan ​​kirjallisesti yhdellä alan suosituimmista verkkosivustoista ja jakamaan tekniikoita ja trendejä, joihin he pitävät silmänsä vuonna 2008. Ja ensimmäistä kertaa SMI Press tarjoaa mielellään osallistujille yhden kolmesta uudesta SMI Press -kirjasta ilmaiseksi!

Tämän tarinan "Tutustuminen BoxLayoutiin" julkaisi alun perin JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found