13 swing: okna



Pobieranie 0,57 Mb.
Strona1/4
Data03.01.2018
Rozmiar0,57 Mb.
  1   2   3   4



Autor wykładu:

Krzysztof Barteczko






BARDZIEJ ZAAWANSOWANE MOŻLIWOŚCI SWINGU





Architektura okien







Wyspecjalizowane kontenery Swingu








Architektura okien


 

Prawie wszystkie komponenty Swingu są komponentami lekkimi, co oznacza m.in., że:




  • mają taki sam wygląd niezależny od platformy systemowej (zależny wyłacznie od wybranego przez programistę "stylu" - "look and feel")

Jednak komponenty lekkie nie mogą istnieć bez jakiegoś komponentu ciężkiego (czyli takiego, który jest realizowany przez odwołanie do natywnego komponentu danej platformy systemowej). Taki komponent (choć jeden) musi znaleźć się u początku hierarchii zawierania się komponentów, tak aby komponenty lekkie mogły być na czymś rysowane.



Dlatego w Swingu kontenery najwyższego poziomu (okna i dialogi) zrealizowane są jako komponenty ciężkie (są to jedyne ciężkie komponenty Swingu).
Hierarchię klas realizujących okna w Swingu przypomina rysunek.

Jak widać okno ramowe, dialog i aplet są komponentami ciężkimi, bowiem pochodzą od odpowiednich klas AWT.


Klasa JInternalFrame jest natomiast komponentem lekkim. Umożliwia ona tworzenie "okien wewnętrznych" (zawartych w obszarze określonego pulpitu).
Praca z kontenerami najwyższego poziomu (oknami) w Swingu zdecydowanie różni się od  pracy z oknami w AWT ze względu na inną architekturę budowy tych komponentów.

Wszystkie w/w typy okien zbudowane są z części.


Każde okno zawiera przede wszystkim kontener rootPane  (typu JRootPane).
Ten z kolei zawiera kontenery glassPane (szyba - obiekt typu JGlassPane) i layeredPane (kontener warstwowy, obiekt typu JLayeredPane).
Kontener layeredPane zawiera contentPane (kontener do którego zwykle dodajemy komponenty) oraz ew. pasek menu (JMenuBar).

Zatem struktura okna jest złożona, co pokazują rysunki.




Rys. Architektura okien w Swingu (źródło: Java API Specification, Java Tutorial).


Złożoność ta wynika po części ze zmieszania komponentów ciężkich (którymi są same okna) z lekkimi (komponenty Swingu), po części zaś - z chęci dostarczenia programiście metod wyszukanej konstrukcji GUI.

 

PRZYPOMNIENIE


Aby manipulować komponentami w oknie (dodawać, usuwać, ustalać ich rozkład) posługujemy się kontenerem contentPane danego okna.
Referencję do contentPane uzyskujemy za pomocą odwołania getContentPane();

Zatem, aby np. dodać komponent comp do okna frame piszemy:

      JFrame frame = new JFrame();
       .....
       frame.getContentPane().add(comp);

a żeby ustalić rozkład:

       frame.getContentPane().setLayout(new GridLayout(1,0));
 





  1   2   3   4


©operacji.org 2017
wyślij wiadomość

    Strona główna