Leagăn

Versiunea actuală a paginii nu a fost încă revizuită de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 21 martie 2017; verificările necesită 20 de modificări .

Swing  este o bibliotecă pentru crearea unei interfețe grafice pentru programe Java . Swing a fost dezvoltat de Sun Microsystems . Conține o serie de componente grafice ( widget-uri Swing în limba engleză  ), cum ar fi butoane, câmpuri de intrare, tabele etc.

Swing se referă la biblioteca de clasă JFC , care este un set de biblioteci pentru dezvoltarea shell-urilor grafice . Aceste biblioteci includ Java 2D , Accessibility-API , Drag & Drop -API și AWT .

Istorie

Începând cu Java 1.2 ( 1998 ), Swing a fost inclus în Java Runtime Environment .

Arhitectură

arata si simte

Arhitectura Swing este concepută astfel încât să puteți schimba „ aspectul și senzația ” (L&F) aplicației dumneavoastră. „Look” determină aspectul componentelor, iar „Feel” - comportamentul lor. JRE de la Sun oferă următoarele L&F [1] :

Comparație cu AWT

Swing oferă componente de interfață mai flexibile decât biblioteca anterioară AWT. Spre deosebire de AWT, componentele Swing sunt proiectate să funcționeze în același mod pe platforme , în timp ce componentele AWT urmează interfața platformei executabile fără modificări. AWT, pe de altă parte, folosește doar elemente standard ale sistemului de operare pentru afișare, adică un obiect separat al sistemului de operare (fereastră) este creat pentru fiecare element și, prin urmare, AWT nu vă permite să creați elemente de formă arbitrară (este posibil să utilizați numai componente dreptunghiulare), controalele bazate pe AWT sunt întotdeauna afișate deasupra elementelor Swing (deoarece toate componentele Swing sunt redate pe suprafața containerului).

Componentele swing suportă vederi și comportamente specifice conectate dinamic ( eng.  plugable look-and-feel ), datorită cărora este posibilă adaptarea la interfața grafică a platformei (adică o alta, specifică sistemului de operare, poate să fie conectat dinamic la componentă, inclusiv aspectul și comportamentul creat de programator). Astfel, aplicațiile care folosesc Swing pot arăta ca aplicații native pentru acel sistem de operare. Principalul dezavantaj al unor astfel de componente „ușoare” ( ing.  Ușoare ) este funcționarea relativ lentă. Partea pozitivă este universalitatea interfeței aplicațiilor create pe toate platformele.

Principiul ușoară

„Ușoară” înseamnă că componentele Swing sunt desenate de componentele înseși pe suprafața ferestrei părinte, fără utilizarea componentelor sistemului de operare . Spre deosebire de componentele AWT „grele”, o aplicație Swing poate avea o singură fereastră, iar toate celelalte componente sunt desenate pe cel mai apropiat părinte care are propria fereastră (cum ar fi un JFrame). Este posibil ca o aplicație să amestece elemente Swing și AWT, deși acest lucru poate cauza unele probleme - în special, componentele AWT se suprapun întotdeauna elementelor Swing și acoperă, de asemenea, meniurile pop-up JPopupMenu și JComboBox. Pentru a preveni acest lucru, aceste componente au metode setLightWeightPopupEnabled(boolean) pentru a dezactiva utilizarea elementelor pop-up ușoare. Prin setarea proprietății la true (setLightWeightPopupEnabled(true)), elementele AWT nu se vor suprapune pe meniu.

Comparație cu SWT

Exemple

„Hello World” folosind Swing:

import javax.swing.JFrame ; import javax.swing.JLabel ; import javax.swing.SwingUtilities ; clasa finală publică HelloWorld implementează Runnable { public static void main ( String [] args ) { // Swing are propriul său fir de difuzare, // care rulează în paralel cu firul principal (firul de început unde este executat main()) . Aceasta înseamnă că dacă firul principal se termină (metoda principală se termină), // firul responsabil pentru rularea interfeței Swing poate continua să ruleze. // Și chiar dacă utilizatorul a închis toate ferestrele, programul își va continua lucrul // (atâta timp cât acest thread este viu). Începând cu Java 6, când toate componentele sunt distruse // de interfața de control, firul de execuție este oprit automat. // // Rulați tot codul care funcționează cu interfața pe firul de control, chiar și inițializarea: SwingUtilities . invokeLater ( new HelloWorld ()); } public void run () { // Creați o fereastră cu titlul „Hello, World!” JFrame f = nou JFrame ( "Bună ziua, lume!" ); // Practica anterioară a fost crearea unui ascultător și înregistrarea // pe instanța ferestrei principale, care a reacționat la windowClosing() // prin oprirea forțată a mașinii virtuale apelând System.exit(). // Acum există o modalitate mai „corectă” de a seta reacția la închiderea ferestrei. // Această metodă distruge fereastra curentă, dar nu oprește aplicația. Acest // va menține aplicația în funcțiune până când toate ferestrele sunt închise. f . setDefaultCloseOperation ( JFrame . DISPOSE_ON_CLOSE ); // cu toate acestea, îl puteți seta și astfel: // f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Adăugați o componentă needitabilă cu text în panoul ferestrei. //f.getContentPane().add (nou JLabel ("Bună ziua, lume!")); - stil vechi f . adaugă ( JLabel nou ( „Bună ziua” )); // pack() „împachetează” fereastra la dimensiunea optimă, calculată din dimensiunile // ale tuturor componentelor din interiorul acesteia. f . pachet (); // Afișează fereastra f . setVisible ( adevărat ); } }

Schimbarea aspectului interfeței folosind Look-And-Feel:

încercați { UIManager . setLookAndFeel ( "javax.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities . updateComponentTreeUI ( aceasta ); } catch ( Excepție e ){ Sistem . afară . println ( "Eroare la încărcarea Metal-Look-And-Feel" ); }

Utilizarea aspectului și simțirii sistemului:

// Fiți conștienți de faptul că schimbarea L&F al aplicației trebuie făcută înainte de // inițializarea oricăror componente Swing, altfel acestea pot fi // inițializate de Java L&F, indiferent de ce L&F ați solicitat. public static void main ( String [] args ) { try { UIManager . setLookAndFeel ( UIManager.getSystemLookAndFeelClassName ( ) ); } catch ( Exception e ) { // Exception handle }

Vezi și

Link -uri

Note

  1. Cum să setați aspectul și senzația Arhivat 28 august 2011 la Wayback Machine (Tutorialele Java™ > Crearea unei interfețe grafice cu JFC/Swing > Modificarea aspectului și simțului)

Literatură