Svinge

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 21. marts 2017; checks kræver 20 redigeringer .

Swing  er et bibliotek til at skabe en grafisk grænseflade til Java -programmer . Swing er udviklet af Sun Microsystems . Den indeholder en række grafiske komponenter ( engelsk  Swing-widgets ), såsom knapper, inputfelter, tabeller osv.

Swing refererer til JFC -klassebiblioteket , som er et sæt biblioteker til udvikling af grafiske skaller . Disse biblioteker inkluderer Java 2D , Accessibility-API , Drag & Drop - API og AWT .

Historie

Siden Java 1.2 ( 1998 ) har Swing været inkluderet i Java Runtime Environment .

Arkitektur

se og føl

Swing - arkitekturen er designet, så du kan ændre " look and feel " (L&F) af din applikation. "Look" bestemmer udseendet af komponenterne, og "Feel" - deres adfærd. Sun's JRE giver følgende L&F'er [1] :

Sammenligning med AWT

Swing giver mere fleksible grænsefladekomponenter end det tidligere AWT-bibliotek. I modsætning til AWT er Swing-komponenter designet til at fungere på samme måde på tværs af platforme , mens AWT-komponenter følger grænsefladen på den eksekverbare platform uden ændringer. AWT derimod bruger kun standard OS-elementer til visning, det vil sige, at der oprettes et separat OS-objekt (vindue) for hvert element, og derfor tillader AWT dig ikke at oprette vilkårligt formede elementer (det er muligt at bruge kun rektangulære komponenter), AWT-baserede kontroller vises altid på toppen af ​​Swing-elementer (fordi alle Swing-komponenter er gengivet på overfladen af ​​beholderen).

Swing-komponenter understøtter specifikke dynamisk forbundne visninger og adfærd ( eng.  plugable look-and-feel ), takket være hvilken tilpasning til platformens grafiske grænseflade er mulig (det vil sige en anden, specifik for operativsystemet, kan være dynamisk forbundet med komponenten, herunder programmør-skabt udseende og adfærd). Således kan applikationer, der bruger Swing, se ud som native applikationer til det pågældende operativsystem. Den største ulempe ved sådanne "lette" ( eng.  Lightweight ) komponenter er relativt langsom drift. Den positive side er universaliteten af ​​grænsefladen for de oprettede applikationer på alle platforme.

Letvægtsprincippet

"Letvægt" betyder, at Swing-komponenter tegnes af komponenterne selv på overfladen af ​​det overordnede vindue uden brug af operativsystemkomponenter . I modsætning til "tunge" AWT-komponenter kan en Swing-applikation kun have ét vindue, og alle andre komponenter er tegnet på den nærmeste forælder, der har sit eget vindue (såsom en JFrame). Det er muligt for en applikation at blande Swing- og AWT-elementer, selvom dette kan give nogle problemer - især overlapper AWT-komponenter altid Swing-elementer og dækker også JPopupMenu og JComboBox popup-menuer. For at forhindre dette har disse komponenter setLightWeightPopupEnabled (boolean) metoder til at deaktivere brugen af ​​letvægts popup-elementer. Ved at indstille egenskaben til true (setLightWeightPopupEnabled(true)) vil AWT-elementer ikke overlappe menuen.

Sammenligning med SWT

Eksempler

"Hello World" ved hjælp af Swing:

import javax.swing.JFrame ; import javax.swing.JLabel ; import javax.swing.SwingUtilities ; offentlig slutklasse HelloWorld implementerer Runnable { _ public static void main ( String [] args ) { // Swing har sin egen afsendelsestråd, // som løber parallelt med hovedtråden (starttråden hvor main() udføres) . Dette betyder, at hvis hovedtråden er færdig med at køre (hovedmetoden slutter), kan // den tråd, der er ansvarlig for at køre Swing-grænsefladen, fortsætte med at køre. // Og selvom brugeren har lukket alle vinduer, vil programmet fortsætte sit arbejde // (så længe denne tråd er i live). Startende med Java 6, når alle komponenter er ødelagt // af kontrolgrænsefladen, stoppes tråden automatisk. // // Kør al kode, der fungerer med grænsefladen på kontroltråden, selv initialisering: SwingUtilities . invokeLater ( ny HelloWorld ()); } public void run () { // Opret et vindue med titlen "Hello, World!" JFrame f = new JFrame ( "Hej, verden!" ); // Den tidligere praksis var at oprette en lytter og registrere // på hovedvinduets instans, som reagerede på windowClosing() // ved at tvangsstoppe den virtuelle maskine ved at kalde System.exit(). // Nu er der en mere "korrekt" måde at indstille reaktionen på lukningen af ​​vinduet. // Denne metode ødelægger det aktuelle vindue, men stopper ikke programmet. Dette // vil holde programmet kørende, indtil alle vinduer er lukket. f . setDefaultCloseOperation ( JFrame . DISPOSE_ON_CLOSE ); // du kan dog også indstille det sådan her: // f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Tilføj en ikke-redigerbar komponent med tekst til vinduespanelet. //f.getContentPane().add (ny JLabel("Hej, verden!")); - gammel stil f . tilføje ( nyt JLabel ( "Hello World" )); // pack() "pakker" vinduet til den optimale størrelse, beregnet ud fra størrelserne // af alle komponenterne i det. f . pakke (); // Vis vindue f . setVisible ( sandt ); } }

Ændring af udseendet af grænsefladen ved hjælp af Look-And-Feel:

prøv { UIManager . setLookAndFeel ( "javax.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities . updateComponentTreeUI ( dette ); } catch ( Undtagelse e ){ System . ud . println ( "Fejl ved indlæsning af Metal-Look-And-Feel" ); }

Brug af System Look-and-Feel:

// Vær opmærksom på, at ændring af applikationens L&F skal ske før // initialisering af Swing-komponenter, ellers kan de // initialiseres af Java L&F, uanset hvilken L&F du har anmodet om. public static void main ( String [] args ) { prøv { UIManager . setLookAndFeel ( UIManager.getSystemLookAndFeelClassName ( ) ); } catch ( Undtagelse e ) { // Undtagelseshåndtag }

Se også

Links

Noter

  1. Sådan indstilles udseendet og følelsen Arkiveret 28. august 2011 på Wayback-maskinen (Java™-vejledningerne > Oprettelse af en GUI med JFC/Swing > Ændring af udseendet og følelsen)

Litteratur