Ten tutorial omawia podstawy programowania GUI (Graphical User Interface) i Java Foundation Classes lub JFC w Javie:
W naszych poprzednich tutorialach poruszaliśmy tematy od podstaw typów danych w Javie, zmiennych, podejmowania decyzji, konstrukcji pętli itp. po tablice, kolekcje i metody w Javie.
Przedyskutowaliśmy również koncepcję wielowątkowości i wyjątków. Następnie poznaliśmy obsługę OOPS w Javie. Używając tych wszystkich pojęć, możemy tworzyć wysokopoziomowe aplikacje w Javie, które są wielokrotnego użytku i solidne, a także samowystarczalne.
=> Sprawdź tutaj, aby zobaczyć A-Z Of Java Training Tutorials.
W tym poradniku rozpoczniemy naszą dyskusję na temat graficznego tworzenia aplikacji w Javie. Jak wszystkie inne koncepcje, Java dostarcza wiele klas graficznych wielokrotnego użytku i APIS, dzięki którym możemy rozwijać nasz graficzny interfejs użytkownika (GUI).
Co to jest graficzny interfejs użytkownika w Javie
Graficzny interfejs użytkownika lub po prostu nazywany „GUI” jest ogólnym terminem używanym w świecie oprogramowania. GUI reprezentuje aplikację, która posiada wizualny wyświetlacz dla użytkownika z łatwymi do użycia kontrolkami. GUI składa się z komponentów graficznych, takich jak okna, ramki, przyciski, etykiety itp.
Możemy używać tych komponentów do interakcji z systemem lub nawet światem zewnętrznym. Java udostępnia wiele API i klas wielokrotnego użytku, za pomocą których możemy tworzyć aplikacje GUI. Jednym z najstarszych zestawów dostarczanych przez Javę jest „Abstract Windowing ToolKit” lub AWT. Wszystkie nowsze API lub komponenty takie jak Swing; JavaFX, itp. są oparte na AWT.
Programy konsolowe, które napisaliśmy do tej pory są równie ważne, ale powinniśmy wiedzieć, że wszystkie najnowsze aplikacje desktopowe są graficznie włączone. Oznacza to, że posiadają one gotowe do użycia GUI, które ułatwiają użytkownikowi końcowemu korzystanie z aplikacji za pomocą kliknięcia myszką.
Zauważ, że pisanie GUI nie jest tak proste jak rysowanie pewnych kształtów lub dołączanie obrazków. GUI zawiera sekwencję działań, które również wyzwalają pewne zdarzenia, które z kolei wykonują pewne działania po wywołaniu komponentu lub części komponentu, jak kliknięcie przycisku wyzwala pewne działania.
Więc aplikacja GUI to szkielet składający się z komponentów graficznych & zdarzeń, które mogą być wyzwalane na tych komponentach i działań, które wykonują się w wyniku wyzwalania zdarzeń.
Frameworki zwykle dostarczają prekompilowane klasy wielokrotnego użytku i komponenty, które możemy przeciągać i upuszczać w obszarze rysowania, a następnie kojarzyć zdarzenia i akcje z tymi komponentami.
Java dostarcza następujących głównych frameworków.
Java dostarcza następujących frameworków do programowania GUI:
- Abstract Windowing Toolkit: Jest to najstarszy framework w Javie i został po raz pierwszy wprowadzony w JDK 1.0. Większość komponentów AWT jest obecnie przestarzała i została zastąpiona przez komponenty Java swing.
- Swing API: Jest to zestaw bibliotek graficznych opracowanych na szczycie frameworka AWT i jest częścią Java Foundation Classes (JFC). Swing posiada modułową architekturę, w której możemy używać plug-and-play dla komponentów.
- JavaFX: Najnowszy framework jest dostępny od Java 8 onwards.
Istnieją różne graficzne frameworki innych firm, takie jak Standard Widget Toolkit (SWT) Eclipse’a lub Google Web Toolkit (GWT) używane na Androidzie.
Java Foundation Classes (JFC)
Java zapewnia zestaw cech i funkcjonalności do tworzenia graficznych interfejsów użytkownika lub GUI. Ten zestaw cech jest znany jako Java Foundation Classes lub JFC.
Używając JFC możemy dodać bogatą funkcjonalność graficzną do aplikacji, a także uczynić je bardziej interaktywnymi. JFC zawiera zestaw komponentów graficznych, które mogą być łatwo dołączone do naszej aplikacji i zaprogramowane zgodnie z naszymi wymaganiami. Programowanie tych komponentów zajmuje zazwyczaj tylko kilka linijek kodu.
JFC zawiera klasy z pakietów java.awt i javax.swing. Oprócz nich, zawiera również klasy związane z Java 3D, Java 2D, Java Accessibility, itp. JFC jest zsynchronizowane z modelem obiektowym i komponentowym Javy, dzięki czemu jest łatwe w użyciu.
Następujący diagram podsumowuje różne komponenty w JFC.
Jak pokazano powyżej, JFC zawiera klasy AWT oraz Swing. Omówimy każdą z nich w dalszej części tutoriali Java AWT i Java Swing. JFC dostarcza również różnych metod, których możemy używać w naszej aplikacji.
Niektóre z powszechnie używanych metod to:
Method | Description |
---|---|
public void add(Component c) | Dodaje komponent do komponentu nadrzędnego wywołującego metodę. |
public void setSize(int width,int height) | Ustawia rozmiar komponentu o określonej szerokości i wysokości. |
public void setLayout(LayoutManager m) | Ustawia określony menedżer układu dla tego komponentu. |
public void setVisible(boolean b) | Ustawia widoczność komponentu zgodnie z wartością boolean. Domyślnie widoczność wynosi false. |
Przejdźmy teraz do omówienia komponentów GUI na poziomie ogólnym. Następnie w kolejnych tutorialach omówimy pakiety AWTi Swing oraz ich komponenty w sposób szczególny.
Komponenty okna
Wiemy, że kontenerem nadrzędnym każdej aplikacji GUI jest Okno, które może zawierać jedną lub więcej ramek.
GUI ogólnie zawiera elementy interfejsu użytkownika lub elementy, które są wyświetlane jako część GUI w aplikacji.
Te komponenty okna są następujące:
- Elementy informacyjne: Elementy lub komponenty, które dostarczają nam informacji, takie jak etykiety, ikony, banery lub okna dialogowe wiadomości.
- Kontrolki wejściowe: Pola tekstowe, przyciski, listy rozwijane, pola wyboru, przyciski radiowe itp. są elementami sterującymi, które pozwalają nam odczytywać dane od użytkownika.
- Komponenty nawigacyjne: Komponenty takie jak menu, paski boczne, okruszki chleba, itp. pomagają nam poruszać się po aplikacji.
Opiszmy teraz kilka ważnych komponentów w GUI.
Ramka w Javie
Ramka jest graficznym oknem widocznym na ekranie. Ramka może być postrzegana jako komponent, ale ponieważ tworzy ona fizyczne okno, które widzimy na ekranie, jest traktowana inaczej niż pozostałe komponenty. Ramka może posiadać inne komponenty graficzne, takie jak przyciski, pola tekstowe, itp. oraz panele.
Ramki posiadają również metody, które nie są obsługiwane przez inne komponenty. „java.awt.Frame” reprezentuje klasę w AWT, podczas gdy JFrame jest klasą zawartą w pakiecie Java Swing, która reprezentuje Frame.
Więc każda aplikacja GUI rozpocznie się od skonstruowania obiektu JFrame, który tworzy główne okno. Kiedy obiekt JFrame jest już utworzony, możemy ustawić jego właściwość visible na true wywołując setVisible (’true'). Następnie możemy przeciągać i upuszczać inne komponenty w tej ramce.
Wszystkie komponenty GUI, w tym ramki, mają pewne wspólne właściwości, ponieważ są częścią wspólnej hierarchii dziedziczenia pokazanej powyżej. Można więc powiedzieć, że w pakiecie Java Swing mamy do czynienia z potężnym przypadkiem współdzielenia kodu.
Następny rysunek przedstawia typowe okno ramki w edytorze GUI.
Jak widać na powyższym rysunku, najbardziej zewnętrznym oknem w edytorze projektu (oznaczonym mniejszą czerwoną strzałką) jest ramka. Wewnątrz tej ramki mamy różne inne komponenty lub komponenty potomne ramki.
Jest to widoczne w panelu po lewej stronie, który pokazuje strukturę drzewiastą komponentów. Jak zaznaczono większą czerwoną strzałką, JFrame jest komponentem głównym, a następnie wszystkie inne komponenty są jego komponentami potomnymi.
JPanel w Javie
Kontener JPanel jest częścią pakietu Swing w Javie. JPanel przechowuje grupę komponentów. JPanel organizuje komponenty za pomocą ustalonego przez siebie układu. Różne układy mogą pomóc JPanelowi lepiej zorganizować komponenty.
JPanel jest uważany za podstawowy budulec dla układu komponentów w ramce lub wewnątrz innych paneli. Aplikacja GUI zazwyczaj posiada Frame jako główne okno i jeden lub więcej paneli wewnątrz niego do przechowywania i organizowania różnych komponentów.
Następujący obrazek pokazuje prosty przykład panelu wewnątrz ramki.
Jak pokazano powyżej, kontener Panel jest osadzony w kontenerze okna Frame. Możemy mieć jeden lub więcej paneli, a nawet panel wewnątrz panelu. Następnie możemy zastosować dowolny menedżer układu do panelu, który będzie organizował komponenty lub elementy wewnątrz panelu. Domyślnym menedżerem układu dla JPanel jest „FlowLayout”.
Układy GUI w Javie
Kontener Java używa automatycznego układu komponentów na ekranie. Jednak o rozmiar i pozycje komponentów dba „menedżer układu”. Menedżer układu jest ustawiany dla kontenera w czasie projektowania. Może on być również zmieniany dynamicznie.
Wspólne układy używane w Java GUI to:
#1) BorderLayout
Układ graniczny dzieli komponent na 5 obszarów, jak pokazano poniżej.
Wśród nich 4 obszary, mianowicie „Północ”, „Południe”, „Wschód” i „Zachód” są nieredukowalne. Obszar „Środek” można zmienić rozmiar. Zauważ, że każdy obszar ma ograniczenie tylko do jednego komponentu, a panele mogą być używane do przechowywania wielu komponentów.
#2) FlowLayout: Ten układ jest używany do przechowywania wielu komponentów. Komponenty są ułożone poziomo i zawijają się, jeśli szerokość kontenera zostanie wyczerpana. Ponadto, komponenty są wyświetlane w kolejności od lewej do prawej.
#3) BoxLayout: Używając układu pudełkowego, komponenty są ułożone pionowo lub poziomo. Ten układ jest niezależny od rozmiaru kontenera. Komponenty w kontenerze są ustawione tak, aby wypełniały kontener i miały identyczne rozmiary.
To były niektóre z ważnych i często używanych komponentów, które mamy w tworzeniu GUI. W naszych kolejnych tutorialach na temat AWT i Swing, zagłębimy się w szczegóły innych komponentów dostarczanych przez te pakiety.
Często zadawane pytania
Q #1) Czym jest programowanie GUI?
Odpowiedź: Programy tworzone przy użyciu komponentów graficznych, które wchodzą w interakcję z komputerem przy użyciu urządzenia wskazującego i są sterowane zdarzeniami, tzn. wykonują pewne działania, gdy pewne zdarzenia są wyzwalane, i są nazywane programowaniem GUI.
Programowanie GUI używa frameworków GUI, gdzie możemy bezpośrednio podłączyć i używać komponentów graficznych.
Q #2) Jakie GUI używać z Javą?
Odpowiedź: Java obsługuje niektóre z najlepszych frameworków, które możemy wykorzystać do tworzenia aplikacji GUI, jak pokazano poniżej:
- JavaFX.
- Swing GUI Java.
- AWT: Abstract Windowing Toolkit.
- SWT- Standard Widget Toolkit.
- Apache Pivot.
- SwingX.
- JGoodies.
- QtJambi.
Q #3) Jakie są zalety GUI?
Odpowiedź: Program GUI sprawia, że aplikacje są interaktywne, intuicyjne i łatwiejsze w użyciu i nauce. Ponieważ dostarczają użytkownikowi graficzne wizualizacje, działania mają większy efekt i w ten sposób otrzymujemy natychmiastową wizualną informację zwrotną o aplikacji.
Q #4) Co to jest JavaFX API?
Odpowiedź: JavaFX to najnowsza biblioteka Javy napisana w natywnym kodzie Javy, zawierająca klasy i interfejsy. JavaFX może być używana do projektowania aplikacji GUI w wersjach Javy późniejszych niż Java 8.
Q #5) Czy Java jest dobra dla GUI?
Odpowiedź: Chociaż Java posiada więcej narzędzi do tworzenia aplikacji GUI wraz z najlepszym wsparciem, nie jest tak szybka i tak wydajna jak biblioteka MFC z C++, która posiada prawie wszystkie funkcje do tworzenia zaawansowanych aplikacji GUI.
Podsumowanie
W tym tutorialu zgłębiliśmy programowanie GUI w Javie. Przedstawiliśmy niektóre z ważnych koncepcji programowania GUI w Javie, a także zobaczyliśmy przegląd frameworków GUI wspieranych przez Javę. Omówiliśmy również przegląd biblioteki JFC.
=> Sprawdź WSZYSTKIE tutoriale Java tutaj.