Houpačka

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 21. března 2017; kontroly vyžadují 20 úprav .

Swing  je knihovna pro tvorbu grafického rozhraní pro Java programy . Swing byl vyvinut společností Sun Microsystems . Obsahuje řadu grafických komponent ( anglické  widgety Swing ), jako jsou tlačítka, vstupní pole, tabulky atd.

Swing odkazuje na knihovnu tříd JFC , což je sada knihoven pro vývoj grafických shellů . Tyto knihovny zahrnují Java 2D , Accessibility-API , Drag & Drop -API a AWT .

Historie

Od verze Java 1.2 ( 1998 ) je Swing součástí Java Runtime Environment .

Architektura

vypadat a cítit

Architektura Swing je navržena tak, abyste mohli změnit „ vzhled a dojem “ (L&F) vaší aplikace. "Look" určuje vzhled komponent a "Feel" - jejich chování. Sun JRE poskytuje následující L&F [1] :

Srovnání s AWT

Swing poskytuje flexibilnější komponenty rozhraní než dřívější knihovna AWT. Na rozdíl od AWT jsou komponenty Swing navrženy tak, aby fungovaly stejným způsobem napříč platformami , zatímco komponenty AWT sledují rozhraní spustitelné platformy beze změn. AWT naproti tomu používá pro zobrazení pouze standardní prvky OS, to znamená, že pro každý prvek je vytvořen samostatný objekt OS (okno), a proto AWT neumožňuje vytvářet prvky libovolného tvaru (lze použít pouze obdélníkové komponenty), ovládací prvky založené na AWT jsou vždy zobrazeny na horních prvcích Swing (protože všechny komponenty Swing jsou vykresleny na povrchu kontejneru).

Swing komponenty podporují specifické dynamicky propojené pohledy a chování ( angl.  plugable look-and-feel ), díky čemuž je možná adaptace na grafické rozhraní platformy (tedy jiné, specifické pro operační systém, může být dynamicky připojen ke komponentě, včetně vzhledu a chování vytvořeného programátorem). Aplikace využívající Swing tedy mohou vypadat jako nativní aplikace pro daný operační systém. Hlavní nevýhodou takto "lehkých" ( angl.  Lightweight ) komponentů je relativně pomalý chod. Pozitivní stránkou je univerzálnost rozhraní vytvářených aplikací na všech platformách.

The Lightweight Principle

"Lehká" znamená, že komponenty Swing jsou vykreslovány samotnými komponentami na povrchu nadřazeného okna, bez použití komponent operačního systému . Na rozdíl od "těžkých" komponent AWT může mít aplikace Swing pouze jedno okno a všechny ostatní komponenty jsou nakresleny na nejbližším rodiči, který má své vlastní okno (jako je JFrame). V aplikaci je možné kombinovat prvky Swing a AWT, i když to může způsobit určité problémy – zejména komponenty AWT vždy překrývají prvky Swing a také pokrývají místní nabídky JPopupMenu a JComboBox. Aby se tomu zabránilo, mají tyto komponenty metody setLightWeightPopupEnabled(boolean) pro zakázání použití prvků zjednodušeného vyskakovacího okna. Nastavením vlastnosti na hodnotu true (setLightWeightPopupEnabled(true)) nebudou prvky AWT překrývat nabídku.

Srovnání s SWT

Příklady

"Ahoj světe" pomocí Swing:

import javax.swing.JFrame ; import javax.swing.JLabel ; import javax.swing.SwingUtilities ; public final class HelloWorld implementuje Runnable { public static void main ( String [] args ) { // Swing má své vlastní odesílací vlákno, // které běží paralelně s hlavním vláknem (spouštěcí vlákno, kde se provádí main()) . To znamená, že pokud hlavní vlákno skončí běh (hlavní metoda skončí), // vlákno zodpovědné za běh rozhraní Swing může pokračovat v běhu. // A i když uživatel zavře všechna okna, program bude pokračovat ve své práci // (dokud je toto vlákno živé). Počínaje Java 6, když jsou všechny komponenty zničeny // řídicím rozhraním, vlákno se automaticky zastaví. // // Spusťte veškerý kód, který pracuje s rozhraním v řídicím vláknu, dokonce i inicializaci: SwingUtilities . invokeLater ( nový HelloWorld ()); } public void spustit () { // Vytvořte okno s názvem "Hello, World!" JFrame f = nový JFrame ( "Ahoj, světe!" ); // Předchozí praxe spočívala ve vytvoření posluchače a registrace // na instanci hlavního okna, která reagovala na windowClosing() // násilným zastavením virtuálního stroje voláním System.exit(). // Nyní existuje "správnější" způsob, jak nastavit reakci na zavření okna. // Tato metoda zničí aktuální okno, ale nezastaví aplikaci. Toto // udrží aplikaci spuštěnou, dokud nebudou zavřena všechna okna. f . setDefaultCloseOperation ( JFrame . DISPOSE_ON_CLOSE ); // můžete to však nastavit také takto: // f.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Přidání neupravitelné komponenty s textem na panel okna. //f.getContentPane().add (new JLabel("Ahoj, světe!")); - starý styl f . add ( nový JLabel ( "Ahoj světe" )); // pack() "sbalí" okno na optimální velikost, vypočítanou z velikostí // všech součástí v něm. f . balení (); // Ukaž okno f . setVisible ( true ); } }

Změna vzhledu rozhraní pomocí Look-And-Feel:

zkuste { UIManager . setLookAndFeel ( "javax.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities . updateComponentTreeUI ( this ); } catch ( Exception e ) { System . ven . println ( "Chyba při načítání Metal-Look-And-Feel" ); }

Použití vzhledu a pocitu systému:

// Uvědomte si, že změna L&F aplikace musí být provedena před // inicializací jakýchkoli komponent Swing, jinak mohou být // inicializovány Java L&F, bez ohledu na to, které L&F jste požadovali. public static void main ( String [] args ) { try { UIManager . setLookAndFeel ( UIManager.getSystemLookAndFeelClassName ( ) ); } catch ( Exception e ) { // handle výjimky }

Viz také

Odkazy

Poznámky

  1. Jak nastavit vzhled a dojem Archivováno 28. srpna 2011 na Wayback Machine (Výukové programy Java™ > Vytvoření GUI pomocí JFC/Swing > Úprava vzhledu a chování)

Literatura