Jason. Cała informatyka w jednym miejscu!

Zaczynamy kolejną serię! Będę miał przyjemność pisać Wam na temat biblioteki "Swing" w języku Java, która pozwala na tworzenie graficznych interfejsów użytkownika. Zapraszam do artykułu, a dowiecie się jak utworzyć pierwsze okno graficzne!

"SWING" W JĘZYKU JAVA. KRÓTKA CHARAKTERYSTYKA

Biblioteka zaczęła istnieć od połowy 1997 roku wypierając ówczesną technologię "AWT" ("Abstract Window Toolkit"). Jest ona niezależna od architektury i "przybiera" automatycznie odpowiedni wygląd dostosowany do systemu operacyjnego. To znaczy, że pozostawiając domyślny motyw aplikacji (bo to można zmienić), aplikacja sama dostosuje się do wyglądu systemu, czyli na systemie Windows będzie wyglądać inaczej, a na Linuxie też inaczej, ale cała funkcjonalność zostanie zachowana taka sama.

Budowa elementów interfejsu graficznego polega na utworzeniu tzw. "ramki" którą możemy nazwać "oknem" i włożenia do niej przeróżnych elementów takich jak przyciski, teksty, czy "ptaszki". Następnie przy pomocy punktów odniesienia układu takiej ramki (układ też można zmieniać na inny), dostosowujemy wielkość i położenie tych elementów. Domyślny układ powoduje, że będą one "rozciągliwe" i będą automatycznie układać się względem wolnego miejsca na danym obszarze.

"Swing" w języku Java jest podstawowym tematem każdej większej literatury dotyczącej nauki języka Java i to jest główny powód dlaczego piszę o tej bibliotece mimo jej wieku. "JavaFX" też nadaje się znakomicie do projektowania aplikacji graficznych, natomiast nie znajdziecie jej w żadnej książce stricte o Javie, ponieważ Sun Microsystems utworzyło to w postaci odrębnej biblioteki zewnętrznej. To nie znajduje się bezpośrednio w "rodzinie" języka. Nie wystarczy sam "JDK", aby w tym pisać, musicie jeszcze doinstalować osobną bibliotekę. Ale to nie jest żadna faworyzacja.

Materiał o samym "Swing" podzieliłem następująco. W kategorii o języku Java, zostawiłem artykuł wprowadzający (jesteś w nim teraz), a dalszy ciąg artykułów o samej bibliotece znajduje się w odrębnej kategorii "Swing (Java)", gdyby kogoś interesowały szczegóły.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Podsumujmy to kodem źródłowym tworzącym dla Was pierwsze okienko utworzone za pomocą "Swing" w języku Java, które można będzie zamknąć tak jak inną graficzną aplikację. Spróbujcie!

KLASA "MAIN"

public class Main {
	public static void main(String[] args) {
		new SwingWindow();
	}
}

KLASA "SWINGWINDOW"

import javax.swing.*;

public class SwingWindow extends JFrame {
	private JLabel label;

	public SwingWindow() {
		createInstances();
		getContentPane().add(label);
		configure();
	}

	private void createInstances() {
		label = new JLabel("Tekst typu JLabel został utworzony i dodany do okna JFrame!", SwingConstants.CENTER);
	}

	private void configure() {
		setTitle("Moje pierwsze okno w Swing");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setResizable(false);
		setSize(512, 256);
		setLocationRelativeTo(null);
	}
}

"Swing" w języku Java wymaga importu biblioteki "javax.swing". Pojedyncze okno reprezentuje klasa "JFrame". Możecie spotkać wiele przykładów w których obiekt "JFrame" wykorzystuje się jako zmienną lokalną, ale ja zwykle piszę to inaczej rozszerzając klasę o "JFrame". W ten sposób, dzięki dziedziczeniu, uzyskuję bezpośredni dostęp do publicznych metod tej klasy, co widać w metodzie "configure".

Trzymajmy się kolejności. Klasa "SwingWindow" posiada jedną prywatną daną składową typu "JLabel". To jest najzwyklejszy w świecie tekst. Następnie w chwili wywołania konstruktora, wykonywana jest metoda tworząca instancję tekstu (tekst jaki ma się wyświetlić oraz wyrównanie jako parametry). Następnie ten sam tekst jest dodawany czyli "osadzany" na naszą ramkę, a na samym końcu jest przeprowadzana konfiguracja samego okna.

"Swing" pozwala naprawdę porządnie kontrolować wszystkie komponenty, bo zwykle z takim terminem możecie się spotkać (powodem jest nazwa klasy "Component", która stanowi klasę abstrakcyjną wszystkich graficznych elementów). Wyjaśniam metody:

  • "setTitle" ustala tytuł okna jaki widzimy na "listwie" umieszczonej na górze
  • "setDefaultCloseOperation" programuje zachowanie procesu co ma się stać w chwili zamknięcia tego okna. Metoda ta jest bardzo ważna bo bez tego, proces będzie "wisiał w powietrzu", nawet po zamknięciu okna "iksem". Najczęściej spotykany zapis to alias "JFrame.EXIT_ON_CLOSE".
  • Domyślnie, okno po uruchomieniu programu jest niewidoczne, zminimalizowane. "setVisible" ustawione na "prawdę" czyni go widocznym.
  • "setResizable" ustala czy okno można rozciągać wedle własnego uznania wzdłuż i wszerz. Jeśli chcemy temu zapobiec, podajemy "false".
  • "Swing" w języku Java udostępnia ponadto dostosowywanie rozmiaru okna i za tym stoi wywołanie "setSize" w którym podajemy szerokość i wysokość w pikselach.
  • Ostatnia metoda którą wykorzystuję to "setLocationRelativeTo". Dzięki wprowadzeniu do niej wartości pustej "null" po ustalonym rozmiarze, okno umieści się dokładnie na środku ekranu wyświetlacza.

Po uruchomieniu powyższego programu, ujrzycie takie oto okienko:

Pierwsze okno w "Swing" w języku Java

Tak wygląda okno po skompilowaniu i uruchomieniu powyższego programu.


To tyle na samym wstępie jeśli chodzi o "Swing" w języku Java. Sięgnijcie do tego wpisu aby dowiedzieć się nieco więcej o podstawowych komponentach (wydzieliłem materiał o "Swing" do odrębnej kategorii, żeby nie mieszać samej Javy z biblioteką).

PODOBNE ARTYKUŁY