Spis treści

REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024×768

<html> <style type=„text/css”> p { text-align: left;} .reveal { font-size: 30px; } .reveal section { width: 96%; margin: 0 auto; } .reveal .slides { width: 60% !important; } .reveal ul, .reveal ol { margin-left: 1.5em; } .reveal pre code {

height: 100%;
max-height: 100%;
box-sizing: border-box; }

</style> </html>

Zajęcia 7. - Graficzne interfejsy użytkownika - Swing

Swing

Swing to biblioteka będąca częścią frameworka JFC, służąca do budowy interfejsów graficznych. Zbudowana jest na AWT i zaimplementowana w czystej Javie. Swing jest niezależny od systemu operacyjnego - kontrolki wyglądają podobnie na różnych platformach. Biblioteka zapewnia bogatszy zestaw kontrolek niż AWT i wspiera wzorzec MVC (Model View Controller), co ułatwia rozdzielenie logiki, danych i prezentacji. Swing jest powszechnie używany zamiast AWT.

Studium przypadku (krótkie wtrącenie)

Jak zbudować interfejs działający i wyglądający podobnie na wielu platformach?

  1. Dla każdej platformy napisać aplikację natywną - dużo pracy.
  2. Stworzyć dobrze napisany backend dostępny na wielu platformach + frontend webowy (przeglądarka lub

opakowanie natywne) - szybsze i tańsze rozwiązanie.

114_1.jpg

Hierarchia klas Swing

Dokumentacja

javax.swing (Java SE)

Tworzenie okna

Okno tworzy się podobnie jak w AWT, lecz korzystając z klas Swing (np. JFrame). Można to zrobić:

  1. Przez asocjację - tworząc obiekt JFrame w kodzie.
  2. Przez dziedziczenie - projektując klasę rozszerzającą JFrame.

Dostępne kontrolki (wybrane)

JEditorPane, JFileChooser, JScrollPane, JToggleButton, JSplitPane, JToolBar, JTextPane, JViewport, JRootPane

Projektowanie interfejsu

Można pisać GUI ręcznie lub skorzystać z narzędzi graficznych (np. Swing UI Designer w IntelliJ IDEA). Opis wyglądu formy zapisany jest w pliku .form (XML), a logika aplikacji w pliku .java. Ręczna edycja pliku .form nie jest zalecana.

LayoutManagers

LayoutManager to interfejs implementowany przez klasy zarządzające układem komponentów. Popularne implementacje:

Dodatkowe layouty w Swing:

Dokumentacja: LayoutManager (Java SE)

Najpopularniejsze menedżery układu:

DataBinding (dla zainteresowanych)

Swing, jako biblioteka kompatybilna z MVC, pozwala stosować mechanizmy Data Binding (one-way i two-way). IntelliJ IDEA oferuje kreator Data Bindingu; opis: JetBrains - Data Binding tutorial.