Keinu

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 21. maaliskuuta 2017 tarkistetusta versiosta . tarkastukset vaativat 20 muokkausta .

Swing  on kirjasto graafisen käyttöliittymän luomiseen Java - ohjelmille . Swingin on kehittänyt Sun Microsystems . Se sisältää useita graafisia komponentteja ( englanninkielisiä  Swing-widgetejä ), kuten painikkeita, syöttökenttiä, taulukoita jne.

Swing viittaa JFC - luokkakirjastoon , joka on joukko kirjastoja graafisten kuorien kehittämiseen . Näitä kirjastoja ovat Java 2D , Accessibility-API , Drag & Drop -API ja AWT .

Historia

Java 1.2:sta ( 1998 ) lähtien Swing on sisällytetty Java Runtime Environment -ympäristöön .

Arkkitehtuuri

Katso ja tunne

Swing - arkkitehtuuri on suunniteltu niin, että voit muuttaa sovelluksesi ulkoasua (L&F). "Katso" määrittää komponenttien ulkonäön ja "Tunne" - niiden käyttäytymisen. Sunin JRE tarjoaa seuraavat L&F :t [1] :

Vertailu AWT:hen

Swing tarjoaa joustavampia käyttöliittymäkomponentteja kuin aikaisempi AWT-kirjasto. Toisin kuin AWT, Swing-komponentit on suunniteltu toimimaan samalla tavalla eri alustoilla , kun taas AWT-komponentit seuraavat suoritettavan alustan käyttöliittymää ilman muutoksia. AWT puolestaan ​​käyttää näyttöön vain tavallisia käyttöjärjestelmän elementtejä, eli jokaiselle elementille luodaan erillinen käyttöjärjestelmäobjekti (ikkuna), joten AWT ei salli mielivaltaisen muotoisten elementtien luomista (on mahdollista käyttää vain suorakaiteen muotoiset komponentit), AWT-pohjaiset säätimet näkyvät aina Swing-elementtien päällä (koska kaikki Swing-komponentit renderöidään säiliön pinnalle).

Swing-komponentit tukevat tiettyjä dynaamisesti yhdistettyjä näkymiä ja käyttäytymismalleja ( eng.  plugable look-and-feel ), minkä ansiosta sopeutuminen alustan graafiseen käyttöliittymään on mahdollista (eli toinen, käyttöjärjestelmäkohtainen, voi olla dynaamisesti yhteydessä komponenttiin, mukaan lukien ohjelmoijan luoma ulkoasu ja toiminta). Siten Swingiä käyttävät sovellukset voivat näyttää kyseisen käyttöjärjestelmän alkuperäisiltä sovelluksilta. Tällaisten "kevyiden" ( eng.  Lightweight ) komponenttien suurin haittapuoli on suhteellisen hidas toiminta. Positiivinen puoli on luotujen sovellusten käyttöliittymän yleisyys kaikilla alustoilla.

Kevyt periaate

"Kevyt" tarkoittaa, että komponentit itse piirtävät Swing-komponentit pääikkunan pinnalle ilman käyttöjärjestelmän komponentteja . Toisin kuin "raskaissa" AWT-komponenteissa, Swing-sovelluksessa voi olla vain yksi ikkuna, ja kaikki muut komponentit piirretään lähimpään pääkomponenttiin, jolla on oma ikkuna (kuten JFrame). Sovellus voi sekoittaa Swing- ja AWT-elementtejä, vaikka tämä voi aiheuttaa ongelmia - erityisesti AWT-komponentit menevät aina Swing-elementtien päälle ja kattavat myös JPopupMenu- ja JComboBox-ponnahdusvalikot. Tämän estämiseksi nämä komponentit ovat määrittäneetLightWeightPopupEnabled(boolean) -menetelmät estämään kevyiden ponnahdusikkunoiden käytön. Asettamalla ominaisuuden arvoksi tosi (setLightWeightPopupEnabled(true)) AWT-elementit eivät mene päällekkäin valikon kanssa.

Vertailu SWT:hen

Esimerkkejä

"Hello World" Swingillä:

tuonti javax.swing.JFrame ; tuonti javax.swing.JLabel ; tuonti javax.swing.SwingUtilities ; julkinen loppuluokka HelloWorld toteuttaa Runnable { _ public static void main ( String [ ] args ) { // Swingillä on oma lähetyssäie, // joka kulkee rinnakkain pääsäikeen kanssa (alkuketju, jossa main() suoritetaan) . Tämä tarkoittaa, että jos pääsäie lopettaa ajon (päämenetelmä päättyy), // Swing-liitännän suorittamisesta vastaava säie voi jatkaa toimintaansa. // Ja vaikka käyttäjä olisi sulkenut kaikki ikkunat, ohjelma jatkaa työtään // (niin kauan kuin tämä säie on elossa). Java 6:sta alkaen, kun kaikki komponentit // ohjausliittymä tuhoaa, säie pysähtyy automaattisesti. // // Suorita kaikki koodi, joka toimii ohjaussäikeen käyttöliittymän kanssa, jopa alustus: SwingUtilities . invokeLater ( uusi HelloWorld ()); } public void run () { // Luo ikkuna, jonka otsikko on "Hei, maailma!" JFrame f = uusi JFrame ( "Hei, maailma!" ); // Aiempi käytäntö oli luoda kuuntelija ja rekisteröidä // pääikkunan ilmentymä, joka reagoi windowClosing() -toimintoon // pysäyttämällä virtuaalikoneen väkisin kutsumalla System.exit(). // Nyt on olemassa "oikea" tapa asettaa reaktio ikkunan sulkeutumiseen. // Tämä menetelmä tuhoaa nykyisen ikkunan, mutta ei pysäytä sovellusta. Tämä // pitää sovelluksen käynnissä, kunnes kaikki ikkunat suljetaan. f . setDefaultCloseOperation ( JFrame . DISPOSE_ON_CLOSE ); // voit kuitenkin asettaa sen myös näin: // f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Lisää ikkunapaneeliin tekstiä sisältävä komponentti, jota ei voi muokata. //f.getContentPane().add (uusi JLabel("Hei, maailma!")); - vanha tyyli f . add ( uusi JLabel ( "Hello World" )); // pack() "pakkaa" ikkunan optimaaliseen kokoon, joka lasketaan kaikkien sen sisällä olevien komponenttien koosta //. f . pakkaus (); // Näytä ikkuna f . setVisible ( tosi ); } }

Käyttöliittymän ulkoasun muuttaminen Look-And-Feel-toiminnolla:

kokeile { UIManager . setLookAndFeel ( "javax.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities . updateComponentTreeUI ( tämä ); } catch ( poikkeus e ){ Järjestelmä . ulos . println ( "Virhe ladattaessa Metal-Look-And-Feel" ); }

Järjestelmän ulkoasun ja tuntuman käyttäminen:

// Huomaa, että sovelluksen L&F:n muuttaminen on tehtävä ennen Swing-komponenttien // alustamista, muuten Java L&F saattaa // alustaa ne, riippumatta siitä, mitä L&F:ää pyysit. public static void main ( Merkkijono [ ] args ) { yritä { UIManager . setLookAndFeel ( UIManager.getSystemLookAndFeelClassName ( ) ); } catch ( Poikkeus e ) { // Poikkeuskahva }

Katso myös

Linkit

Muistiinpanot

  1. Ulkoasun ja tuntuman asettaminen Arkistoitu 28. elokuuta 2011 Wayback Machinessa (Java™-opetusohjelmat > GUI:n luominen JFC/Swingillä > Ulkoasun ja tuntuman muokkaaminen)

Kirjallisuus