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"? 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" 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.

Konkrety, konkrety. 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".

Schemat regionów "BorderLayout"

"BorderLayout" 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 PROGRAMU

Tradycyjnie zakończymy artykuł przykładowym programem wykorzystującym "BorderLayout" 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 SwingWindow();
	}
}
  • KLASA "SwingWindow"
import java.awt.*;
import javax.swing.*;

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

	public SwingWindow()
	{
		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. Po odpaleniu programu, ujrzycie taki sam wygląd jak na rysunku, tylko przycisku zamiast obramowań. Tak się prezentuje układ "BorderLayout".


Tyle, jeśli chodzi o ten układ. W celu otrzymania więcej informacji, polecam posiłkowanie się dokumentacją Javy.

PODOBNE ARTYKUŁY