Jason. Cała informatyka w jednym miejscu!

Idziemy dalej z biblioteką "Swing" i językiem Java! Podczas omawiania poprzednich tematów padło już wielokrotnie hasło: "BorderLayout". I jak zdążyłem wspomnieć, jest to jeden z "układów" dla rozmieszczania mniejszych komponentów na "ramce" o nazwie "JFrame". Ale co to jest "układ"? Co to jest "BorderLayout" w "Swing"? I jakie mogą być jeszcze inne układy jeśli twierdzę, że ten przytoczony to tylko jeden z nich? Niech zawartość artykułu rozwieje te wątpliwości raz na zawsze!

"BORDERLAYOUT" W "SWING" JEST JEDNYM Z UKŁADÓW!

Nie dopatrzyłem się żadnej "książkowej" definicji czym jest "układ" w języku Java, jeśli mówimy o bibliotece "Swing". Postaram się to określić własnymi słowami. Układ stanowi zbiór zasad rozmieszczeń innych komponentów jak mają się one zachowywać gdy są wstawione do innego większego komponentu pełniącego funkcję "rodzica" czy też "kontenera". Mówiliśmy sobie, że "JFrame" jako "ramka" pełni funkcję "okna". Dodawaliśmy do niej przyciski i teksty. Natomiast możecie też wstawić drugi inny komponent, który też będzie posiadał własny układ.

Jednak co to w końcu jest? Jak to wygląda? Jak się tym posługiwać? Konkretnie jest to jeden z dostępnych układów biblioteki "Swing" posiadający pięć tzw. "regionów" i na każdym z nich można wstawić jeden komponent. Dzielą się one na część północną, południową, wschodnią, zachodnią i centralną. Został on tak skonstruowany, że automatycznie dostosowuje wymiary komponentów "podstawionych" do tych regionów. Jeżeli dla przykładu jest zajęta tylko część wschodnia, przyjmie całą wysokość okna. Jeśli jest jeszcze dodatkowo część północna, przeznacza miejsce na wysokość dla części północnej "obcinając" fragment od części wschodniej. W taki sposób działa "BorderLayout" w "Swing".

Schemat regionów układu "BorderLayout" w Swing

"BorderLayout" w "Swing" to domyślny układ komponentu "JFrame" składający się z pięciu "regionów" na których umieszcza się inne komponenty.

W taki sposób wygląda rozmieszczanie komponentów według omawianego schematu. Jeśli chcecie rozumieć układy, polecam zacząć od tego. Posiada prostą budowę.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Tradycyjnie zakończymy artykuł przykładowym programem wykorzystującym "BorderLayout" w "Swing" w aplikacji graficznej. Zwróćcie szczególną uwagę na dodawanie komponentu do ramki. To tam decydujecie na jakim "regionie" coś umieścić:

KLASA "MAIN"

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

KLASA "SWINGFRAME"

import java.awt.*;
import javax.swing.*;

public class SwingFrame extends JFrame {
	private JButton buttonNorth, buttonSouth, buttonWest, buttonEast, buttonCenter;

	public SwingFrame() {
		createInstances();
		addToFrame();
		configure();
	}

	private void createInstances() {
		buttonNorth = new JButton("CZĘŚĆ PÓŁNOCNA");
		buttonSouth = new JButton("CZĘŚĆ POŁUDNIOWA");
		buttonWest = new JButton("CZĘŚĆ ZACHODNIA");
		buttonEast = new JButton("CZĘŚĆ WSCHODNIA");
		buttonCenter = new JButton("CZĘŚĆ CENTRALNA");
	}

	private void addToFrame() {
		Container pane = getContentPane();

		pane.add(BorderLayout.NORTH, buttonNorth);
		pane.add(BorderLayout.SOUTH, buttonSouth);
		pane.add(BorderLayout.WEST, buttonWest);
		pane.add(BorderLayout.EAST, buttonEast);
		pane.add(BorderLayout.CENTER, buttonCenter);

	}

	private void configure() {
		setTitle("Układ BorderLayout w Swing");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
		setResizable(false);
		setSize(800, 600);
		setLocationRelativeTo(null);
	}
}

Teraz powinniście zaczynać kumać te aliasy "BorderLayout.NORTH" i tym podobne (BTW, to są wartości typu "enum" jaki znajduje się w Javie). Po odpaleniu programu, ujrzycie taki sam wygląd jak na rysunku, tylko przycisków zamiast obramowań. Tak się prezentuje układ "BorderLayout" w "Swing".


Tyle, jeśli chodzi o ten układ. W celu otrzymania więcej informacji, polecam posiłkowanie się dokumentacją Javy, a tutaj znajdziecie informacje na temat kolejnego układu.

PODOBNE ARTYKUŁY