Languages

Erudis - your road to knowledge
Do czego służy SAF

SAF z założenia ma być rozwiązaniem prostym, koncentrującym się na zasadniczych problemach, na jakie napotykamy się tworząc programy z interfejsem użytkownika w Javie.

SAF zajmuje się następującymi aspektami tworzenia aplikacji z interfejsem użytkownika:

  • cyklem życia aplikacji od jej uruchomienia po zamknięcie;
  • zarządzaniem zasobami: łańcuchami znaków, kolorami, ikonami, czcionkami itp. artefaktami, które występują w typowej aplikacji. Oczywiście wszystkie zasoby mogą być internacjonalizowane/lokalizowane;
  • obsługą zdarzeń (co ma się stać, gdy użytkownik naciśnie przycisk X). W szczególności SAF upraszcza znacząco obsługę długotrwałych zdarzeń, które powinny wykonywać się w wątkach roboczych, a nie głównym;
  • przechowywaniem stanu aplikacji. Po zamknięciu aplikacji pamięta ona jaki był stan interfejsu użytkownika (rozmiar okien, ich położenie) przed zamknięciem.

Żeby nie przedłużać wstępu przejdźmy do rzeczy, czyli przyjrzyjmy się przykładowej aplikacji Szukacz (Rysunek 1). Szukacz jest napisaną w Javie kulawą i ubogą funkcjonalnie namiastką unixowego grep-a, ma za to graficzny interfejs użytkownika

Aplikacja Szukacz

Rysunek 1. Główny ekran aplikacji Szukacz

Aplikacja jest skonstruowana inaczej niż w większości demonstracyjnych aplikacji Swing Application Framework, które można znaleźć w Internecie. Problemem używanych tam przykładów jest ich mała użyteczność w rzeczywistej sytuacji. Przykłady te dzielą się na dwie grupy:

  • aplikacje wyklikane od początku do końca w środowisku NetBeans, korzystające z kreatorów kodu tam dostępnych – SAF jest produktem firmy SUN, podobnie jak NetBeans, który w najnowszej wersji zawiera wsparcie dla SAF;
  • aplikacje napisane całkowicie ręcznie, włącznie z elementami GUI.

Żadna z tych sytuacji nie jest typowa. Po pierwsze, nie każdy chce używać NetBeansa (fakt, jest on bardzo dobrym produktem jeśli chodzi o tworzenie GUI), a nawet jeżeli go używamy, to istnieje duża szansa, że mamy już napisany kawałek kodu, który nie używa SAF i chcielibyśmy go gładko zintegrować frameworkiem.

Co do drugiej sytuacji, jeśli nie jesteśmy maniakalnymi zwolennikami ręcznego pisania kodu GUI, co zazwyczaj kończy się mniejszą lub większą katastrofą połączoną z gromami rzucanymi na Swinga i Javę w ogóle, to pewnie chcemy użyć jakiegoś wizualnego narzędzia, które pozwoli nam wyklikać strukturę interfejsu użytkownika. Narzędzie to na pewno jeszcze nie wspiera SAF, a my oczywiście nie chcemy być zmuszeni do rezygnacji z jego użycia.

Zobaczymy dalej jak tworzyć GUI tak, jak nam jest najwygodniej i móc go w każdej chwili zintegrować z SAF. Zatem do dzieła.